From b030d88101281e223eefec2bb9928173153b6b85 Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 18 Nov 2015 17:02:02 +0300 Subject: [PATCH] command future cancel state checking fixed --- .../java/org/redisson/CommandBatchExecutorService.java | 8 ++++++-- src/main/java/org/redisson/CommandExecutorService.java | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/redisson/CommandBatchExecutorService.java b/src/main/java/org/redisson/CommandBatchExecutorService.java index 8a07aec7c..19e5a482e 100644 --- a/src/main/java/org/redisson/CommandBatchExecutorService.java +++ b/src/main/java/org/redisson/CommandBatchExecutorService.java @@ -16,7 +16,6 @@ package org.redisson; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Queue; @@ -224,7 +223,12 @@ public class CommandBatchExecutorService extends CommandExecutorService { connectionManager.getShutdownLatch().release(); } - if (attemptPromise.isDone() || mainPromise.isCancelled()) { + if (attemptPromise.isDone()) { + return; + } + + if (mainPromise.isCancelled()) { + attemptPromise.cancel(false); return; } diff --git a/src/main/java/org/redisson/CommandExecutorService.java b/src/main/java/org/redisson/CommandExecutorService.java index 2a895e2b0..adac5b1bd 100644 --- a/src/main/java/org/redisson/CommandExecutorService.java +++ b/src/main/java/org/redisson/CommandExecutorService.java @@ -440,7 +440,12 @@ public class CommandExecutorService implements CommandExecutor { connectionManager.getShutdownLatch().release(); } - if (attemptPromise.isDone() || mainPromise.isCancelled()) { + if (attemptPromise.isDone()) { + return; + } + + if (mainPromise.isCancelled()) { + attemptPromise.cancel(false); return; } @@ -457,7 +462,7 @@ public class CommandExecutorService implements CommandExecutor { } }; - ex.set(new RedisTimeoutException("Command execution timeout for command: " + command + " with params " + Arrays.toString(params))); + ex.set(new RedisTimeoutException("Command execution timeout for command: " + command + " with params " + Arrays.toString(params) + " attempt " + attempt)); final Timeout timeout = connectionManager.newTimeout(retryTimerTask, connectionManager.getConfig().getTimeout(), TimeUnit.MILLISECONDS); connectionFuture.addListener(new FutureListener() {