diff --git a/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java b/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java index 97b83d728..43aa88a60 100644 --- a/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java +++ b/redisson/src/main/java/org/redisson/connection/ClientConnectionsEntry.java @@ -111,6 +111,11 @@ public class ClientConnectionsEntry { public void setFreezed(boolean freezed) { this.freezed = freezed; } + + public void reset() { + freeConnectionsCounter.removeListeners(); + freeSubscribeConnectionsCounter.removeListeners(); + } public int getFreeAmount() { return freeConnectionsCounter.getCounter(); diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveEntry.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveEntry.java index 1314c524c..58ddeee3d 100644 --- a/redisson/src/main/java/org/redisson/connection/MasterSlaveEntry.java +++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveEntry.java @@ -143,6 +143,8 @@ public class MasterSlaveEntry { } } + entry.reset(); + // close all connections while (true) { final RedisConnection connection = entry.pollConnection(); diff --git a/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java b/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java index c4ad451f0..3772d8b60 100644 --- a/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java +++ b/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java @@ -17,8 +17,6 @@ package org.redisson.pubsub; import java.util.Iterator; import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.Queue; import java.util.Set; import java.util.concurrent.CountDownLatch; @@ -58,6 +56,12 @@ public class AsyncSemaphore { } } + public void removeListeners() { + synchronized (this) { + listeners.clear(); + } + } + public void acquire(Runnable listener) { boolean run = false;