Fixed - Fixed - continues handling of RedisLoadingException leads to excessive load. #1534

pull/1933/head
Nikita Koksharov 6 years ago
parent 9ce12e10f4
commit f82246c345

@ -1080,18 +1080,19 @@ public class CommandAsyncService implements CommandAsyncExecutor {
return;
}
if (future.cause() instanceof RedisTryAgainException
|| future.cause() instanceof RedisLoadingException) {
connectionManager.newTimeout(new TimerTask() {
@Override
public void run(Timeout timeout) throws Exception {
async(details.isReadOnlyMode(), source, details.getCodec(),
details.getCommand(), details.getParams(), details.getMainPromise(), details.getAttempt(), ignoreRedirect);
}
}, 1, TimeUnit.SECONDS);
AsyncDetails.release(details);
return;
if (future.cause() instanceof RedisLoadingException
|| future.cause() instanceof RedisTryAgainException) {
if (details.getAttempt() < connectionManager.getConfig().getRetryAttempts()) {
connectionManager.newTimeout(new TimerTask() {
@Override
public void run(Timeout timeout) throws Exception {
async(details.isReadOnlyMode(), source, details.getCodec(),
details.getCommand(), details.getParams(), details.getMainPromise(), details.getAttempt() + 1, ignoreRedirect);
}
}, Math.min(connectionManager.getConfig().getTimeout(), 1000), TimeUnit.MILLISECONDS);
AsyncDetails.release(details);
return;
}
}
free(details.getParams());

@ -776,16 +776,18 @@ public class CommandBatchService extends CommandAsyncService {
execute(entry, nodeSource, mainPromise, slots, attempt, options);
return;
}
if (future.cause() instanceof RedisTryAgainException
|| future.cause() instanceof RedisLoadingException) {
entry.clearErrors();
connectionManager.newTimeout(new TimerTask() {
@Override
public void run(Timeout timeout) throws Exception {
execute(entry, source, mainPromise, slots, attempt, options);
}
}, 1, TimeUnit.SECONDS);
return;
if (future.cause() instanceof RedisLoadingException
|| future.cause() instanceof RedisTryAgainException) {
if (details.getAttempt() < connectionManager.getConfig().getRetryAttempts()) {
entry.clearErrors();
connectionManager.newTimeout(new TimerTask() {
@Override
public void run(Timeout timeout) throws Exception {
execute(entry, source, mainPromise, slots, attempt + 1, options);
}
}, Math.min(connectionManager.getConfig().getTimeout(), 1000), TimeUnit.MILLISECONDS);
return;
}
}
free(entry);

Loading…
Cancel
Save