From 1212b39f5b15653eceb1887bb7c9c57a9a00d0ec Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 22 Sep 2017 17:52:06 +0300 Subject: [PATCH] Remove listeners during slave down process handling. #945 --- .../org/redisson/connection/ClientConnectionsEntry.java | 5 +++++ .../java/org/redisson/connection/MasterSlaveEntry.java | 2 ++ .../src/main/java/org/redisson/pubsub/AsyncSemaphore.java | 8 ++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) 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;