From 34d2e4de3a8b6cc9170fe7b5d82d40498fe60f1e Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Sat, 24 Jul 2021 10:27:27 +0300 Subject: [PATCH] Fixed - AsyncSemaphore race condition issue. 3703 --- .../main/java/org/redisson/pubsub/AsyncSemaphore.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java b/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java index ce2c95ebe..5b1a879d5 100644 --- a/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java +++ b/redisson/src/main/java/org/redisson/pubsub/AsyncSemaphore.java @@ -60,11 +60,6 @@ public class AsyncSemaphore { } private void tryRun() { - if (counter.get() == 0 - || listeners.peek() == null) { - return; - } - if (counter.decrementAndGet() >= 0) { Runnable listener = listeners.poll(); if (listener == null) { @@ -74,7 +69,9 @@ public class AsyncSemaphore { listener.run(); } else { - counter.incrementAndGet(); + if (counter.incrementAndGet() > 0) { + tryRun(); + } } }