diff --git a/redisson/src/main/java/org/redisson/RedissonRemoteService.java b/redisson/src/main/java/org/redisson/RedissonRemoteService.java index 21fea8e0a..7aff15bef 100644 --- a/redisson/src/main/java/org/redisson/RedissonRemoteService.java +++ b/redisson/src/main/java/org/redisson/RedissonRemoteService.java @@ -264,7 +264,7 @@ public class RedissonRemoteService extends BaseRemoteService implements RRemoteS } int freeWorkers = entry.getFreeWorkers().decrementAndGet(); - if (freeWorkers > 0 && requestId != null) { + if (freeWorkers > 0) { subscribe(remoteInterface, requestQueue, executor, bean); } diff --git a/redisson/src/test/java/org/redisson/executor/RedissonExecutorServiceTest.java b/redisson/src/test/java/org/redisson/executor/RedissonExecutorServiceTest.java index 4382a63e4..f2f0adb18 100644 --- a/redisson/src/test/java/org/redisson/executor/RedissonExecutorServiceTest.java +++ b/redisson/src/test/java/org/redisson/executor/RedissonExecutorServiceTest.java @@ -694,4 +694,21 @@ public class RedissonExecutorServiceTest extends RedisDockerTest { assertThat(counter.get()).isGreaterThan(0); } + @Test + public void testSubmitAfterPause() throws InterruptedException { + + RExecutorService redissonES = redisson.getExecutorService("test-worker"); + redissonES.registerWorkers(WorkerOptions.defaults().workers(2)); + + redissonES.submit(new RunnableTask()); + Thread.sleep(Duration.ofSeconds(1)); + assertThat(redissonES.getTaskCount()).isEqualTo(0); + + Thread.sleep(Duration.ofMinutes(1)); + + redissonES.submit(new RunnableTask()); + Thread.sleep(Duration.ofSeconds(1)); + assertThat(redissonES.getTaskCount()).isEqualTo(0); + } + }