From d62e66ecdb4d80e0837f0eb9e4e9dbd448a177ce Mon Sep 17 00:00:00 2001 From: Nikita Date: Tue, 7 Feb 2017 17:41:54 +0300 Subject: [PATCH] NPE during RedissonPermitExpirableSemaphore.availablePermits method call fixed --- .../java/org/redisson/RedissonPermitExpirableSemaphore.java | 3 ++- .../org/redisson/RedissonPermitExpirableSemaphoreTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/RedissonPermitExpirableSemaphore.java b/redisson/src/main/java/org/redisson/RedissonPermitExpirableSemaphore.java index 92434bc1c..5038c16cd 100644 --- a/redisson/src/main/java/org/redisson/RedissonPermitExpirableSemaphore.java +++ b/redisson/src/main/java/org/redisson/RedissonPermitExpirableSemaphore.java @@ -672,7 +672,8 @@ public class RedissonPermitExpirableSemaphore extends RedissonExpirable implemen "end;" + "return value; " + "end; " + - "return redis.call('get', KEYS[1]); ", + "local ret = redis.call('get', KEYS[1]); " + + "return ret == false and 0 or ret;", Arrays.asList(getName(), timeoutName, getChannelName()), System.currentTimeMillis()); } diff --git a/redisson/src/test/java/org/redisson/RedissonPermitExpirableSemaphoreTest.java b/redisson/src/test/java/org/redisson/RedissonPermitExpirableSemaphoreTest.java index 43a7db04a..870e3a75d 100644 --- a/redisson/src/test/java/org/redisson/RedissonPermitExpirableSemaphoreTest.java +++ b/redisson/src/test/java/org/redisson/RedissonPermitExpirableSemaphoreTest.java @@ -13,6 +13,12 @@ import org.redisson.client.RedisException; public class RedissonPermitExpirableSemaphoreTest extends BaseConcurrentTest { + @Test + public void testNotExistent() { + RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("testSemaphoreForNPE"); + Assert.assertEquals(0, semaphore.availablePermits()); + } + @Test public void testAvailablePermits() throws InterruptedException { RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("test-semaphore");