diff --git a/redisson/src/main/java/org/redisson/RedissonExecutorService.java b/redisson/src/main/java/org/redisson/RedissonExecutorService.java index 4713a7b4d..d1775ebe7 100644 --- a/redisson/src/main/java/org/redisson/RedissonExecutorService.java +++ b/redisson/src/main/java/org/redisson/RedissonExecutorService.java @@ -471,12 +471,17 @@ public class RedissonExecutorService implements RScheduledExecutorService { } @Override - public void shutdown() { + public void deregisterWorkers() { queueTransferService.remove(getName()); remoteService.deregister(RemoteExecutorService.class); if (workersGroupListenerId != 0) { workersTopic.removeListener(workersGroupListenerId); } + } + + @Override + public void shutdown() { + deregisterWorkers(); commandExecutor.get(commandExecutor.evalWriteAsync(getName(), LongCodec.INSTANCE, RedisCommands.EVAL_VOID, "if redis.call('exists', KEYS[2]) == 0 then " diff --git a/redisson/src/main/java/org/redisson/api/RExecutorService.java b/redisson/src/main/java/org/redisson/api/RExecutorService.java index 9f2e10900..da9578083 100644 --- a/redisson/src/main/java/org/redisson/api/RExecutorService.java +++ b/redisson/src/main/java/org/redisson/api/RExecutorService.java @@ -202,6 +202,12 @@ public interface RExecutorService extends ExecutorService, RExecutorServiceAsync */ void registerWorkers(WorkerOptions options); + /** + * Deregister all workers + * + */ + void deregisterWorkers(); + /** * Returns amount of tasks awaiting execution or currently in execution. *