diff --git a/redisson/src/main/java/org/redisson/executor/ScheduledTasksService.java b/redisson/src/main/java/org/redisson/executor/ScheduledTasksService.java index 0106a34fb..2249189bd 100644 --- a/redisson/src/main/java/org/redisson/executor/ScheduledTasksService.java +++ b/redisson/src/main/java/org/redisson/executor/ScheduledTasksService.java @@ -141,7 +141,7 @@ public class ScheduledTasksService extends TasksService { } @Override - protected String generateRequestId() { + protected String generateRequestId(Object[] args) { if (requestId == null) { byte[] id = new byte[17]; ThreadLocalRandom.current().nextBytes(id); diff --git a/redisson/src/main/java/org/redisson/executor/TasksService.java b/redisson/src/main/java/org/redisson/executor/TasksService.java index 7c5f0be0e..5787aee59 100644 --- a/redisson/src/main/java/org/redisson/executor/TasksService.java +++ b/redisson/src/main/java/org/redisson/executor/TasksService.java @@ -180,7 +180,7 @@ public class TasksService extends BaseRemoteService { } @Override - protected String generateRequestId() { + protected String generateRequestId(Object[] args) { byte[] id = new byte[17]; ThreadLocalRandom.current().nextBytes(id); id[0] = 00; diff --git a/redisson/src/main/java/org/redisson/remote/AsyncRemoteProxy.java b/redisson/src/main/java/org/redisson/remote/AsyncRemoteProxy.java index f45ea04a6..2f927ee26 100644 --- a/redisson/src/main/java/org/redisson/remote/AsyncRemoteProxy.java +++ b/redisson/src/main/java/org/redisson/remote/AsyncRemoteProxy.java @@ -91,7 +91,7 @@ public class AsyncRemoteProxy extends BaseRemoteProxy { InvocationHandler handler = new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - String requestId = remoteService.generateRequestId(); + String requestId = remoteService.generateRequestId(args); if (method.getName().equals("toString")) { return getClass().getSimpleName() + "-" + remoteInterface.getSimpleName() + "-proxy-" + requestId; diff --git a/redisson/src/main/java/org/redisson/remote/BaseRemoteService.java b/redisson/src/main/java/org/redisson/remote/BaseRemoteService.java index 65709233f..cfb0b3ddd 100644 --- a/redisson/src/main/java/org/redisson/remote/BaseRemoteService.java +++ b/redisson/src/main/java/org/redisson/remote/BaseRemoteService.java @@ -16,6 +16,7 @@ package org.redisson.remote; import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import io.netty.util.CharsetUtil; import io.netty.util.Timeout; @@ -170,10 +171,10 @@ public abstract class BaseRemoteService { }, 3000, TimeUnit.MILLISECONDS); } - protected String generateRequestId() { + protected String generateRequestId(Object[] args) { byte[] id = new byte[16]; ThreadLocalRandom.current().nextBytes(id); - return new String(id); + return ByteBufUtil.hexDump(id); } protected abstract CompletableFuture addAsync(String requestQueueName, RemoteServiceRequest request, diff --git a/redisson/src/main/java/org/redisson/remote/SyncRemoteProxy.java b/redisson/src/main/java/org/redisson/remote/SyncRemoteProxy.java index 9c274f9e8..e23dca171 100644 --- a/redisson/src/main/java/org/redisson/remote/SyncRemoteProxy.java +++ b/redisson/src/main/java/org/redisson/remote/SyncRemoteProxy.java @@ -43,25 +43,23 @@ public class SyncRemoteProxy extends BaseRemoteProxy { public T create(Class remoteInterface, RemoteInvocationOptions options) { // local copy of the options, to prevent mutation RemoteInvocationOptions optionsCopy = new RemoteInvocationOptions(options); - String toString = getClass().getSimpleName() + "-" + remoteInterface.getSimpleName() + "-proxy-" - + remoteService.generateRequestId(); InvocationHandler handler = new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + String requestId = remoteService.generateRequestId(args); + if (method.getName().equals("toString")) { - return toString; + return getClass().getSimpleName() + "-" + remoteInterface.getSimpleName() + "-proxy-" + requestId; } else if (method.getName().equals("equals")) { return proxy == args[0]; } else if (method.getName().equals("hashCode")) { - return toString.hashCode(); + return (getClass().getSimpleName() + "-" + remoteInterface.getSimpleName() + "-proxy-" + requestId).hashCode(); } if (!optionsCopy.isResultExpected() && !(method.getReturnType().equals(Void.class) || method.getReturnType().equals(Void.TYPE))) throw new IllegalArgumentException("The noResult option only supports void return value"); - String requestId = remoteService.generateRequestId(); - String requestQueueName = getRequestQueueName(remoteInterface); RemoteServiceRequest request = new RemoteServiceRequest(executorId, requestId, method.getName(), remoteService.getMethodSignature(method), args, optionsCopy, System.currentTimeMillis());