From 3619e434dff880dbe0dfce12f29593b2e017e104 Mon Sep 17 00:00:00 2001 From: mika Date: Mon, 8 Mar 2021 19:03:24 +0800 Subject: [PATCH] refactor Signed-off-by: xujie --- .../connection/ClientConnectionsEntry.java | 18 +++++++++++ .../balancer/LoadBalancerManager.java | 30 +++++-------------- .../connection/pool/ConnectionPool.java | 18 ++--------- 3 files changed, 29 insertions(+), 37 deletions(-) diff --git a/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java b/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java index 8f73953cb..ebe249ddc 100644 --- a/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java +++ b/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java @@ -259,6 +259,24 @@ public class ClientConnectionsEntry { freeSubscribeConnectionsCounter.release(); } + public void closeAllConnections() { + synchronized (this) { + for (RedisConnection connection : this.getAllConnections()) { + if (!connection.isClosed()) { + connection.closeAsync(); + } + } + this.getAllConnections().clear(); + + for (RedisConnection connection : this.getAllSubscribeConnections()) { + if (!connection.isClosed()) { + connection.closeAsync(); + } + } + this.getAllSubscribeConnections().clear(); + } + } + @Override public String toString() { return "[freeSubscribeConnectionsAmount=" + freeSubscribeConnections.size() diff --git a/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java b/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java index 08d69e0df..64d5baf77 100644 --- a/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java +++ b/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java @@ -153,28 +153,14 @@ public class LoadBalancerManager { private AtomicBoolean initConnError = new AtomicBoolean(false); @Override public void accept(Void r, Throwable ex) { - synchronized (this) { - if (ex == null) { - listener.decCounter(); - } else { - if (!initConnError.compareAndSet(false, true)) { - return; - } - for (RedisConnection connection : entry.getAllConnections()) { - if (!connection.isClosed()) { - connection.closeAsync(); - } - } - entry.getAllConnections().clear(); - - for (RedisConnection connection : entry.getAllSubscribeConnections()) { - if (!connection.isClosed()) { - connection.closeAsync(); - } - } - entry.getAllSubscribeConnections().clear(); - entry.setInitialized(false); + if (ex == null) { + listener.decCounter(); + } else { + if (!initConnError.compareAndSet(false, true)) { + return; } + entry.closeAllConnections(); + entry.setInitialized(false); } } }; @@ -187,7 +173,7 @@ public class LoadBalancerManager { } return false; } - + public ClientConnectionsEntry freeze(RedisURI address, FreezeReason freezeReason) { ClientConnectionsEntry connectionEntry = getEntry(address); return freeze(connectionEntry, freezeReason); diff --git a/redisson/src/main/java/org/redisson/connection/pool/ConnectionPool.java b/redisson/src/main/java/org/redisson/connection/pool/ConnectionPool.java index f20950110..f5445ab14 100644 --- a/redisson/src/main/java/org/redisson/connection/pool/ConnectionPool.java +++ b/redisson/src/main/java/org/redisson/connection/pool/ConnectionPool.java @@ -131,21 +131,9 @@ abstract class ConnectionPool { if (initPromise.isDone()) { return; } - - for (RedisConnection connection : entry.getAllConnections()) { - if (!connection.isClosed()) { - connection.closeAsync(); - } - } - entry.getAllConnections().clear(); - - for (RedisConnection connection : entry.getAllSubscribeConnections()) { - if (!connection.isClosed()) { - connection.closeAsync(); - } - } - entry.getAllSubscribeConnections().clear(); - + + entry.closeAllConnections(); + int totalInitializedConnections = minimumIdleSize - initializedConnections.get(); String errorMsg; if (totalInitializedConnections == 0) {