From ac44d9df0b950d6be8bf87cfcb17c8ff4783050c Mon Sep 17 00:00:00 2001 From: seakider Date: Fri, 27 Dec 2024 20:16:46 +0800 Subject: [PATCH] Fixed - responseFuture not finished Signed-off-by: seakider --- .../java/org/redisson/remote/BaseRemoteProxy.java | 2 +- .../org/redisson/RedissonRemoteServiceTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/remote/BaseRemoteProxy.java b/redisson/src/main/java/org/redisson/remote/BaseRemoteProxy.java index 720fcc17a..009baab2f 100644 --- a/redisson/src/main/java/org/redisson/remote/BaseRemoteProxy.java +++ b/redisson/src/main/java/org/redisson/remote/BaseRemoteProxy.java @@ -201,7 +201,7 @@ public abstract class BaseRemoteProxy { List list = entry.getResponses().get(key); if (list == null) { pollResponse(); - return null; + return entry; } Result res = list.remove(0); diff --git a/redisson/src/test/java/org/redisson/RedissonRemoteServiceTest.java b/redisson/src/test/java/org/redisson/RedissonRemoteServiceTest.java index 294794ef6..492097914 100644 --- a/redisson/src/test/java/org/redisson/RedissonRemoteServiceTest.java +++ b/redisson/src/test/java/org/redisson/RedissonRemoteServiceTest.java @@ -17,6 +17,7 @@ import reactor.core.publisher.Mono; import java.io.IOException; import java.io.NotSerializableException; import java.io.Serializable; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -919,4 +920,18 @@ public class RedissonRemoteServiceTest extends RedisDockerTest { r1.shutdown(); r2.shutdown(); } + + @Test + public void testDelayMethod() throws InterruptedException { + RedissonClient client = createInstance(); + RRemoteService r1 = client.getRemoteService(); + r1.register(RemoteInterface.class, new RemoteImpl()); + + RemoteInvocationOptions options = RemoteInvocationOptions.defaults().noAck().expectResultWithin(1, TimeUnit.SECONDS); + Assertions.assertThrows(RemoteServiceTimeoutException.class, () -> r1.get(RemoteInterface.class, options).timeoutMethod()); + + RFuture future = r1.get(RemoteInterfaceAsync.class, options).timeoutMethod(); + Thread.sleep(3000); + assertThat(future.isDone()).isEqualTo(true); + } }