From 04ff16027f20416d70f47e640bb6450de8dae7cc Mon Sep 17 00:00:00 2001 From: godotg Date: Mon, 12 Dec 2022 09:08:35 +0800 Subject: [PATCH] fix[net]: fixed the inconsistency between the hashcode and int Value() return values of the Long wrapper class --- net/src/main/java/com/zfoo/net/task/TaskBus.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/net/src/main/java/com/zfoo/net/task/TaskBus.java b/net/src/main/java/com/zfoo/net/task/TaskBus.java index 1eb214b7..65fe8428 100644 --- a/net/src/main/java/com/zfoo/net/task/TaskBus.java +++ b/net/src/main/java/com/zfoo/net/task/TaskBus.java @@ -114,11 +114,11 @@ public final class TaskBus { if (attachment == null) { var session = task.getSession(); - var uid = session.getAttribute(AttributeType.UID); + var uid = (Long) session.getAttribute(AttributeType.UID); if (uid == null) { execute((int) session.getSid(), task); } else { - execute((int) uid, task); + execute(uid.intValue(), task); } } else { execute(attachment.taskExecutorHash(), task); @@ -131,7 +131,15 @@ public final class TaskBus { } public static int calTaskExecutorHash(Object argument) { - return calTaskExecutorHash((argument == null) ? RandomUtils.randomInt() : argument.hashCode()); + var hash = 0; + if (argument == null) { + hash = RandomUtils.randomInt(); + } else if (argument instanceof Number) { + hash = ((Number) argument).intValue(); + } else { + hash = argument.hashCode(); + } + return calTaskExecutorHash(hash); } public static void execute(int taskExecutorHash, Runnable runnable) {