Fixed - RedisTimeoutException is thrown if retryInterval set to 0 #2175

pull/2300/head
Nikita Koksharov 6 years ago
parent 87d603c7d3
commit f4611f0035

@ -69,6 +69,7 @@ import org.redisson.codec.ReferenceCodecProvider;
import org.redisson.config.Config;
import org.redisson.config.MasterSlaveServersConfig;
import org.redisson.connection.ConnectionManager;
import org.redisson.connection.MasterSlaveConnectionManager;
import org.redisson.connection.MasterSlaveEntry;
import org.redisson.connection.NodeSource;
import org.redisson.connection.NodeSource.Redirect;
@ -649,7 +650,7 @@ public class CommandAsyncService implements CommandAsyncExecutor {
return mainPromise;
}
@SuppressWarnings({"NestedIfDepth"})
@SuppressWarnings({"NestedIfDepth", "MethodLength"})
public <V, R> void async(boolean readOnlyMode, NodeSource source, Codec codec,
RedisCommand<V> command, Object[] params, RPromise<R> mainPromise, int attempt,
boolean ignoreRedirect) {
@ -718,7 +719,13 @@ public class CommandAsyncService implements CommandAsyncExecutor {
return;
}
details.incAttempt();
Timeout timeout = connectionManager.newTimeout(this, connectionManager.getConfig().getRetryInterval(), TimeUnit.MILLISECONDS);
Timeout timeout;
if (connectionManager.getConfig().getRetryInterval() > 0) {
timeout = connectionManager.newTimeout(this, connectionManager.getConfig().getRetryInterval(), TimeUnit.MILLISECONDS);
} else {
timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT;
}
details.setTimeout(timeout);
return;
}
@ -762,7 +769,12 @@ public class CommandAsyncService implements CommandAsyncExecutor {
};
Timeout timeout = connectionManager.newTimeout(retryTimerTask, connectionManager.getConfig().getRetryInterval(), TimeUnit.MILLISECONDS);
Timeout timeout;
if (connectionManager.getConfig().getRetryInterval() > 0) {
timeout = connectionManager.newTimeout(retryTimerTask, connectionManager.getConfig().getRetryInterval(), TimeUnit.MILLISECONDS);
} else {
timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT;
}
details.setTimeout(timeout);
details.setupMainPromiseListener(mainPromiseListener);

@ -50,6 +50,7 @@ import org.redisson.client.protocol.CommandsData;
import org.redisson.client.protocol.RedisCommand;
import org.redisson.client.protocol.RedisCommands;
import org.redisson.connection.ConnectionManager;
import org.redisson.connection.MasterSlaveConnectionManager;
import org.redisson.connection.MasterSlaveEntry;
import org.redisson.connection.NodeSource;
import org.redisson.connection.NodeSource.Redirect;
@ -679,7 +680,14 @@ public class CommandBatchService extends CommandAsyncService {
return;
}
details.incAttempt();
Timeout timeout = connectionManager.newTimeout(this, interval, TimeUnit.MILLISECONDS);
Timeout timeout;
if (interval > 0) {
timeout = connectionManager.newTimeout(this, interval, TimeUnit.MILLISECONDS);
} else {
timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT;
}
details.setTimeout(timeout);
return;
}

@ -86,7 +86,7 @@ import io.netty.util.internal.PlatformDependent;
*/
public class MasterSlaveConnectionManager implements ConnectionManager {
private final Timeout dummyTimeout = new Timeout() {
public static final Timeout DUMMY_TIMEOUT = new Timeout() {
@Override
public Timer timer() {
return null;
@ -109,7 +109,7 @@ public class MasterSlaveConnectionManager implements ConnectionManager {
@Override
public boolean cancel() {
return false;
return true;
}
};
@ -685,7 +685,7 @@ public class MasterSlaveConnectionManager implements ConnectionManager {
return timer.newTimeout(task, delay, unit);
} catch (IllegalStateException e) {
// timer is shutdown
return dummyTimeout;
return DUMMY_TIMEOUT;
}
}

Loading…
Cancel
Save