From 93d4c8ee2f9c3510b6956b8f3a3d33027ae2cb5f Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 31 Oct 2016 16:28:12 +0300 Subject: [PATCH] RFairLock.forceUnlock doesn't clean stale queued threads. --- redisson/src/main/java/org/redisson/RedissonFairLock.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonFairLock.java b/redisson/src/main/java/org/redisson/RedissonFairLock.java index 73dd905fe..0540be769 100644 --- a/redisson/src/main/java/org/redisson/RedissonFairLock.java +++ b/redisson/src/main/java/org/redisson/RedissonFairLock.java @@ -231,14 +231,14 @@ public class RedissonFairLock extends RedissonLock implements RLock { + "if (redis.call('del', KEYS[1]) == 1) then " + - "local nextThreadId = redis.call('lindex', KEYS[3], 0); " + + "local nextThreadId = redis.call('lindex', KEYS[2], 0); " + "if nextThreadId ~= false then " + - "redis.call('publish', KEYS[2] .. ':' .. nextThreadId, ARGV[1]); " + + "redis.call('publish', KEYS[3] .. ':' .. nextThreadId, ARGV[1]); " + "end; " + "return 1 " + "end " + "return 0;", - Arrays.asList(getName(), getChannelName(), getThreadsQueueName()), LockPubSub.unlockMessage); + Arrays.asList(getName(), getThreadsQueueName(), getChannelName()), LockPubSub.unlockMessage); } }