diff --git a/redisson/src/main/java/org/redisson/RedissonLockEntry.java b/redisson/src/main/java/org/redisson/RedissonLockEntry.java index 7bf271f01..cfb1d5c98 100644 --- a/redisson/src/main/java/org/redisson/RedissonLockEntry.java +++ b/redisson/src/main/java/org/redisson/RedissonLockEntry.java @@ -20,9 +20,14 @@ import java.util.concurrent.Semaphore; import org.redisson.misc.RPromise; +/** + * + * @author Nikita Koksharov + * + */ public class RedissonLockEntry implements PubSubEntry { - private int counter; + private volatile int counter; private final Semaphore latch; private final RPromise promise; @@ -34,6 +39,10 @@ public class RedissonLockEntry implements PubSubEntry { this.promise = promise; } + public int acquired() { + return counter; + } + public void acquire() { counter++; } diff --git a/redisson/src/main/java/org/redisson/pubsub/SemaphorePubSub.java b/redisson/src/main/java/org/redisson/pubsub/SemaphorePubSub.java index 11e72109d..e4fe6ae2a 100644 --- a/redisson/src/main/java/org/redisson/pubsub/SemaphorePubSub.java +++ b/redisson/src/main/java/org/redisson/pubsub/SemaphorePubSub.java @@ -41,7 +41,7 @@ public class SemaphorePubSub extends PublishSubscribe { runnableToExecute.run(); } - value.getLatch().release(Math.min(value.getLatch().getQueueLength(), message.intValue())); + value.getLatch().release(Math.min(value.acquired(), message.intValue())); } }