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); + } }