From db78bc9da4df2c98a02aa711aae16ec854b65465 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Tue, 22 Jun 2021 10:39:37 +0300 Subject: [PATCH] Fixed - RScheduledExecutorService stops to work if task timeout occurred. #3652 --- .../org/redisson/executor/TasksRunnerService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/redisson/src/main/java/org/redisson/executor/TasksRunnerService.java b/redisson/src/main/java/org/redisson/executor/TasksRunnerService.java index 9201ec971..90a0e9cb4 100644 --- a/redisson/src/main/java/org/redisson/executor/TasksRunnerService.java +++ b/redisson/src/main/java/org/redisson/executor/TasksRunnerService.java @@ -367,6 +367,10 @@ public class TasksRunnerService implements RemoteExecutorService { * @param requestId */ void finish(String requestId, boolean removeTask) { + if (Thread.currentThread().isInterrupted()) { + return; + } + String script = ""; if (removeTask) { script += "local scheduled = redis.call('zscore', KEYS[5], ARGV[3]);" @@ -384,10 +388,11 @@ public class TasksRunnerService implements RemoteExecutorService { + "end;" + "end;"; - commandExecutor.get(commandExecutor.evalWriteAsync(name, StringCodec.INSTANCE, RedisCommands.EVAL_VOID, + RFuture f = commandExecutor.evalWriteAsync(name, StringCodec.INSTANCE, RedisCommands.EVAL_VOID, script, - Arrays.asList(tasksCounterName, statusName, terminationTopicName, tasksName, schedulerQueueName, tasksRetryIntervalName), - RedissonExecutorService.SHUTDOWN_STATE, RedissonExecutorService.TERMINATED_STATE, requestId)); + Arrays.asList(tasksCounterName, statusName, terminationTopicName, tasksName, schedulerQueueName, tasksRetryIntervalName), + RedissonExecutorService.SHUTDOWN_STATE, RedissonExecutorService.TERMINATED_STATE, requestId); + commandExecutor.get(f); } }