Fixed - WriteRedisConnectionException is thrown after Redis Cluster failover. #2802

pull/2819/head
Nikita Koksharov 5 years ago
parent b60b731303
commit cf3721931d

@ -352,14 +352,12 @@ public class CommandAsyncService implements CommandAsyncExecutor {
private NodeSource getNodeSource(String key) {
int slot = connectionManager.calcSlot(key);
MasterSlaveEntry entry = connectionManager.getEntry(slot);
return new NodeSource(entry, slot);
return new NodeSource(slot);
}
private NodeSource getNodeSource(byte[] key) {
int slot = connectionManager.calcSlot(key);
MasterSlaveEntry entry = connectionManager.getEntry(slot);
return new NodeSource(entry, slot);
return new NodeSource(slot);
}
@Override

@ -37,8 +37,7 @@ public class NodeSource {
this.entry = entry;
}
public NodeSource(MasterSlaveEntry entry, Integer slot) {
this.entry = entry;
public NodeSource(Integer slot) {
this.slot = slot;
}

@ -423,6 +423,10 @@ abstract class ConnectionPool<T extends RedisConnection> {
}
public void returnConnection(ClientConnectionsEntry entry, T connection) {
if (entry == null) {
connection.closeAsync();
return;
}
if (entry.isFreezed() && entry.getFreezeReason() != FreezeReason.SYSTEM) {
connection.closeAsync();
entry.getAllConnections().remove(connection);

Loading…
Cancel
Save