diff --git a/src/main/java/org/redisson/RedissonCountDownLatch.java b/src/main/java/org/redisson/RedissonCountDownLatch.java index 6a6b46b40..fd44300db 100644 --- a/src/main/java/org/redisson/RedissonCountDownLatch.java +++ b/src/main/java/org/redisson/RedissonCountDownLatch.java @@ -224,8 +224,11 @@ public class RedissonCountDownLatch extends RedissonObject implements RCountDown public Future deleteAsync() { return commandExecutor.evalWriteAsync(getName(), LongCodec.INSTANCE, RedisCommands.EVAL_BOOLEAN_R1, "if redis.call('del', KEYS[1]) == 1 then " - + "redis.call('publish', ARGV[2], ARGV[1]); " - + "return true else return false end", + + "redis.call('publish', ARGV[2], ARGV[1]); " + + "return true " + + "else " + + "return false " + + "end", Collections.singletonList(getName()), newCountMessage, getChannelName()); } diff --git a/src/main/java/org/redisson/RedissonLock.java b/src/main/java/org/redisson/RedissonLock.java index e9367cdf2..86d586f51 100644 --- a/src/main/java/org/redisson/RedissonLock.java +++ b/src/main/java/org/redisson/RedissonLock.java @@ -26,15 +26,12 @@ import org.redisson.client.RedisPubSubListener; import org.redisson.client.codec.LongCodec; import org.redisson.client.protocol.RedisCommands; import org.redisson.client.protocol.pubsub.PubSubType; -import org.redisson.codec.JsonJacksonCodec; import org.redisson.command.CommandExecutor; -import org.redisson.connection.PubSubConnectionEntry; import org.redisson.core.RLock; import io.netty.util.Timeout; import io.netty.util.TimerTask; import io.netty.util.concurrent.Future; -import io.netty.util.concurrent.FutureListener; import io.netty.util.concurrent.Promise; import io.netty.util.internal.PlatformDependent; @@ -363,7 +360,12 @@ public class RedissonLock extends RedissonExpirable implements RLock { private Future forceUnlockAsync() { stopRefreshTask(); return commandExecutor.evalWriteAsync(getName(), LongCodec.INSTANCE, RedisCommands.EVAL_BOOLEAN_R1, - "redis.call('del', KEYS[1]); redis.call('publish', ARGV[2], ARGV[1]); return true", + "if (redis.call('del', KEYS[1]) == 1) then " + + "redis.call('publish', ARGV[2], ARGV[1]); " + + "return true " + + "else " + + "return false " + + "end", Collections.singletonList(getName()), unlockMessage, getChannelName()); } @@ -404,12 +406,6 @@ public class RedissonLock extends RedissonExpirable implements RLock { return opStatus.intValue(); } - @Override - public boolean delete() { - forceUnlock(); - return true; - } - @Override public Future deleteAsync() { return forceUnlockAsync(); diff --git a/src/test/java/org/redisson/BaseConcurrentTest.java b/src/test/java/org/redisson/BaseConcurrentTest.java index 1d413363c..af05fc681 100644 --- a/src/test/java/org/redisson/BaseConcurrentTest.java +++ b/src/test/java/org/redisson/BaseConcurrentTest.java @@ -13,7 +13,7 @@ public abstract class BaseConcurrentTest extends BaseTest { protected void testMultiInstanceConcurrency(int iterations, final RedissonRunnable runnable) throws InterruptedException { ExecutorService executor = Executors.newCachedThreadPool(); - final Map instances = new HashMap(); + final Map instances = new HashMap(); for (int i = 0; i < iterations; i++) { instances.put(i, BaseTest.createInstance()); } @@ -24,7 +24,7 @@ public abstract class BaseConcurrentTest extends BaseTest { executor.execute(new Runnable() { @Override public void run() { - Redisson redisson = instances.get(n); + RedissonClient redisson = instances.get(n); runnable.run(redisson); } }); @@ -37,7 +37,7 @@ public abstract class BaseConcurrentTest extends BaseTest { executor = Executors.newCachedThreadPool(); - for (final Redisson redisson : instances.values()) { + for (final RedissonClient redisson : instances.values()) { executor.execute(new Runnable() { @Override public void run() { @@ -53,7 +53,7 @@ public abstract class BaseConcurrentTest extends BaseTest { protected void testSingleInstanceConcurrency(int iterations, final RedissonRunnable runnable) throws InterruptedException { ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); - final Redisson redisson = BaseTest.createInstance(); + final RedissonClient redisson = BaseTest.createInstance(); long watch = System.currentTimeMillis(); for (int i = 0; i < iterations; i++) { executor.execute(new Runnable() { diff --git a/src/test/java/org/redisson/BaseTest.java b/src/test/java/org/redisson/BaseTest.java index 464d63b49..31586006c 100644 --- a/src/test/java/org/redisson/BaseTest.java +++ b/src/test/java/org/redisson/BaseTest.java @@ -6,7 +6,7 @@ import org.junit.BeforeClass; public abstract class BaseTest { - protected static Redisson redisson; + protected static RedissonClient redisson; @BeforeClass public static void beforeClass() { @@ -35,7 +35,7 @@ public abstract class BaseTest { return config; } - public static Redisson createInstance() { + public static RedissonClient createInstance() { Config config = createConfig(); return Redisson.create(config); } diff --git a/src/test/java/org/redisson/ConcurrentRedissonSortedSetTest.java b/src/test/java/org/redisson/ConcurrentRedissonSortedSetTest.java index ddafb7322..8f855db30 100644 --- a/src/test/java/org/redisson/ConcurrentRedissonSortedSetTest.java +++ b/src/test/java/org/redisson/ConcurrentRedissonSortedSetTest.java @@ -17,7 +17,7 @@ public class ConcurrentRedissonSortedSetTest extends BaseConcurrentTest { public void testAdd_SingleInstance() throws InterruptedException { final String name = "testAdd_SingleInstance"; - Redisson r = BaseTest.createInstance(); + RedissonClient r = BaseTest.createInstance(); RSortedSet map = r.getSortedSet(name); map.clear(); @@ -30,7 +30,7 @@ public class ConcurrentRedissonSortedSetTest extends BaseConcurrentTest { final AtomicInteger counter = new AtomicInteger(-1); testSingleInstanceConcurrency(length, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { RSortedSet set = redisson.getSortedSet(name); int c = counter.incrementAndGet(); Integer element = elements.get(c); @@ -41,7 +41,7 @@ public class ConcurrentRedissonSortedSetTest extends BaseConcurrentTest { // for (Integer integer : map) { // System.out.println("int: " + integer); // } - + Collections.sort(elements); Integer[] p = elements.toArray(new Integer[elements.size()]); MatcherAssert.assertThat(map, Matchers.contains(p)); @@ -54,7 +54,7 @@ public class ConcurrentRedissonSortedSetTest extends BaseConcurrentTest { public void testAddNegative_SingleInstance() throws InterruptedException { final String name = "testAddNegative_SingleInstance"; - Redisson r = BaseTest.createInstance(); + RedissonClient r = BaseTest.createInstance(); RSortedSet map = r.getSortedSet(name); map.clear(); @@ -62,7 +62,7 @@ public class ConcurrentRedissonSortedSetTest extends BaseConcurrentTest { final AtomicInteger counter = new AtomicInteger(); testSingleInstanceConcurrency(length, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { RSortedSet set = redisson.getSortedSet(name); int c = counter.decrementAndGet(); Assert.assertTrue(set.add(c)); diff --git a/src/test/java/org/redisson/RedissonConcurrentMapTest.java b/src/test/java/org/redisson/RedissonConcurrentMapTest.java index 0243e3a27..ed3903744 100644 --- a/src/test/java/org/redisson/RedissonConcurrentMapTest.java +++ b/src/test/java/org/redisson/RedissonConcurrentMapTest.java @@ -18,7 +18,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.replace("1", "122", "32"); map.replace("1", "0", "31"); @@ -39,7 +39,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { map.putIfAbsent("1", "0"); testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.remove("1", "0"); } @@ -57,7 +57,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.replace("1", "3"); } @@ -73,7 +73,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { public void test_Multi_Replace_MultiInstance() throws InterruptedException { final String name = "test_Multi_Replace_MultiInstance"; - Redisson redisson = BaseTest.createInstance(); + RedissonClient redisson = BaseTest.createInstance(); ConcurrentMap map = redisson.getMap(name); for (int i = 0; i < 5; i++) { map.put(i, 1); @@ -82,7 +82,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { final SecureRandom secureRandom = new SecureRandom(); testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); Assert.assertNotNull(map.replace(secureRandom.nextInt(5), 2)); } @@ -110,7 +110,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { final SecureRandom secureRandom = new SecureRandom(); testMultiInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.remove(secureRandom.nextInt(10), 1); } @@ -127,7 +127,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { map.putIfAbsent("1", "0"); testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.putIfAbsent("1", "1"); } @@ -144,7 +144,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { final String name = "testMultiPutIfAbsent_SingleInstance"; testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.putIfAbsent("" + Math.random(), "1"); } @@ -158,7 +158,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { final String name = "testMultiPutIfAbsent_MultiInstance"; testMultiInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.putIfAbsent("" + Math.random(), "1"); } @@ -178,7 +178,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { final String name = "testMultiPut_SingleInstance"; testSingleInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { Map map = redisson.getMap(name); map.put("" + Math.random(), "1"); } @@ -193,7 +193,7 @@ public class RedissonConcurrentMapTest extends BaseConcurrentTest { final String name = "testMultiPut_MultiInstance"; testMultiInstanceConcurrency(100, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { ConcurrentMap map = redisson.getMap(name); map.putIfAbsent("" + Math.random(), "1"); } diff --git a/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java b/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java index 417a57bc3..96c703fb8 100644 --- a/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java +++ b/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java @@ -15,7 +15,7 @@ public class RedissonCountDownLatchConcurrentTest { public void testSingleCountDownAwait_SingleInstance() throws InterruptedException { final int iterations = Runtime.getRuntime().availableProcessors()*3; - Redisson redisson = BaseTest.createInstance(); + RedissonClient redisson = BaseTest.createInstance(); final RCountDownLatch latch = redisson.getCountDownLatch("latch"); latch.trySetCount(iterations); diff --git a/src/test/java/org/redisson/RedissonLockTest.java b/src/test/java/org/redisson/RedissonLockTest.java index 563f87339..3eb920e5b 100644 --- a/src/test/java/org/redisson/RedissonLockTest.java +++ b/src/test/java/org/redisson/RedissonLockTest.java @@ -11,6 +11,15 @@ import org.redisson.core.RLock; public class RedissonLockTest extends BaseConcurrentTest { + @Test + public void testDelete() { + RLock lock = redisson.getLock("lock"); + Assert.assertFalse(lock.delete()); + + lock.lock(); + Assert.assertTrue(lock.delete()); + } + @Test public void testForceUnlock() { RLock lock = redisson.getLock("lock"); @@ -50,7 +59,7 @@ public class RedissonLockTest extends BaseConcurrentTest { final CountDownLatch latch = new CountDownLatch(1); testSingleInstanceConcurrency(1, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { RLock lock = redisson.getLock("lock"); lock.lock(); latch.countDown(); @@ -204,7 +213,7 @@ public class RedissonLockTest extends BaseConcurrentTest { int iterations = 15; testSingleInstanceConcurrency(iterations, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { Lock lock = redisson.getLock("testConcurrency_SingleInstance"); System.out.println("lock1 " + Thread.currentThread().getId()); lock.lock(); @@ -227,7 +236,7 @@ public class RedissonLockTest extends BaseConcurrentTest { testMultiInstanceConcurrency(16, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { for (int i = 0; i < iterations; i++) { redisson.getLock("testConcurrency_MultiInstance1").lock(); try { @@ -251,7 +260,7 @@ public class RedissonLockTest extends BaseConcurrentTest { testMultiInstanceConcurrency(iterations, new RedissonRunnable() { @Override - public void run(Redisson redisson) { + public void run(RedissonClient redisson) { Lock lock = redisson.getLock("testConcurrency_MultiInstance2"); lock.lock(); lockedCounter.incrementAndGet(); diff --git a/src/test/java/org/redisson/RedissonRunnable.java b/src/test/java/org/redisson/RedissonRunnable.java index 377378bac..b8c55ae72 100644 --- a/src/test/java/org/redisson/RedissonRunnable.java +++ b/src/test/java/org/redisson/RedissonRunnable.java @@ -2,6 +2,6 @@ package org.redisson; public interface RedissonRunnable { - void run(Redisson redisson); + void run(RedissonClient redisson); } diff --git a/src/test/java/org/redisson/RedissonTest.java b/src/test/java/org/redisson/RedissonTest.java index 11118301d..52a9d4483 100644 --- a/src/test/java/org/redisson/RedissonTest.java +++ b/src/test/java/org/redisson/RedissonTest.java @@ -22,7 +22,7 @@ public class RedissonTest extends BaseTest { Config config = new Config(); config.useSingleServer().setAddress("127.0.0.1:6379"); config.setCodec(new SerializationCodec()); - Redisson r = Redisson.create(config); + RedissonClient r = Redisson.create(config); r.getMap("test").put("1", new Dummy()); } diff --git a/src/test/java/org/redisson/RedissonTopicPatternTest.java b/src/test/java/org/redisson/RedissonTopicPatternTest.java index f4dea44a7..e01c85c15 100644 --- a/src/test/java/org/redisson/RedissonTopicPatternTest.java +++ b/src/test/java/org/redisson/RedissonTopicPatternTest.java @@ -55,7 +55,7 @@ public class RedissonTopicPatternTest { public void testUnsubscribe() throws InterruptedException { final CountDownLatch messageRecieved = new CountDownLatch(1); - Redisson redisson = BaseTest.createInstance(); + RedissonClient redisson = BaseTest.createInstance(); RPatternTopic topic1 = redisson.getPatternTopic("topic1.*"); int listenerId = topic1.addListener(new PatternMessageListener() { @Override @@ -86,7 +86,7 @@ public class RedissonTopicPatternTest { public void testLazyUnsubscribe() throws InterruptedException { final CountDownLatch messageRecieved = new CountDownLatch(1); - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RPatternTopic topic1 = redisson1.getPatternTopic("topic.*"); int listenerId = topic1.addListener(new PatternMessageListener() { @Override @@ -99,7 +99,7 @@ public class RedissonTopicPatternTest { topic1.removeListener(listenerId); Thread.sleep(1000); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RPatternTopic topic2 = redisson2.getPatternTopic("topic.*"); topic2.addListener(new PatternMessageListener() { @Override @@ -125,7 +125,7 @@ public class RedissonTopicPatternTest { final CountDownLatch messageRecieved = new CountDownLatch(5); final CountDownLatch statusRecieved = new CountDownLatch(1); - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RPatternTopic topic1 = redisson1.getPatternTopic("topic.*"); topic1.addListener(new BasePatternStatusListener() { @Override @@ -142,7 +142,7 @@ public class RedissonTopicPatternTest { } }); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RTopic topic2 = redisson2.getTopic("topic.t1"); topic2.addListener(new MessageListener() { @Override @@ -171,7 +171,7 @@ public class RedissonTopicPatternTest { @Test public void testListenerRemove() throws InterruptedException { - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RPatternTopic topic1 = redisson1.getPatternTopic("topic.*"); final CountDownLatch l = new CountDownLatch(1); topic1.addListener(new BasePatternStatusListener() { @@ -188,7 +188,7 @@ public class RedissonTopicPatternTest { } }); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RTopic topic2 = redisson2.getTopic("topic.t1"); topic1.removeListener(id); topic2.publish(new Message("123")); diff --git a/src/test/java/org/redisson/RedissonTopicTest.java b/src/test/java/org/redisson/RedissonTopicTest.java index 3a6efa2b7..56223814b 100644 --- a/src/test/java/org/redisson/RedissonTopicTest.java +++ b/src/test/java/org/redisson/RedissonTopicTest.java @@ -49,7 +49,7 @@ public class RedissonTopicTest { @Test public void testInnerPublish() throws InterruptedException { - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); final RTopic topic1 = redisson1.getTopic("topic1"); final CountDownLatch messageRecieved = new CountDownLatch(3); int listenerId = topic1.addListener(new MessageListener() { @@ -60,7 +60,7 @@ public class RedissonTopicTest { } }); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); final RTopic topic2 = redisson2.getTopic("topic2"); topic2.addListener(new MessageListener() { @Override @@ -83,7 +83,7 @@ public class RedissonTopicTest { @Test public void testStatus() throws InterruptedException { - Redisson redisson = BaseTest.createInstance(); + RedissonClient redisson = BaseTest.createInstance(); final RTopic topic1 = redisson.getTopic("topic1"); final CountDownLatch l = new CountDownLatch(1); int listenerId = topic1.addListener(new BaseStatusListener() { @@ -112,7 +112,7 @@ public class RedissonTopicTest { public void testUnsubscribe() throws InterruptedException { final CountDownLatch messageRecieved = new CountDownLatch(1); - Redisson redisson = BaseTest.createInstance(); + RedissonClient redisson = BaseTest.createInstance(); RTopic topic1 = redisson.getTopic("topic1"); int listenerId = topic1.addListener(new MessageListener() { @Override @@ -143,7 +143,7 @@ public class RedissonTopicTest { public void testLazyUnsubscribe() throws InterruptedException { final CountDownLatch messageRecieved = new CountDownLatch(1); - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RTopic topic1 = redisson1.getTopic("topic"); int listenerId = topic1.addListener(new MessageListener() { @Override @@ -155,7 +155,7 @@ public class RedissonTopicTest { topic1.removeListener(listenerId); Thread.sleep(1000); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RTopic topic2 = redisson2.getTopic("topic"); topic2.addListener(new MessageListener() { @Override @@ -177,7 +177,7 @@ public class RedissonTopicTest { public void test() throws InterruptedException { final CountDownLatch messageRecieved = new CountDownLatch(2); - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RTopic topic1 = redisson1.getTopic("topic"); topic1.addListener(new MessageListener() { @Override @@ -187,7 +187,7 @@ public class RedissonTopicTest { } }); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RTopic topic2 = redisson2.getTopic("topic"); topic2.addListener(new MessageListener() { @Override @@ -210,7 +210,7 @@ public class RedissonTopicTest { public void testHeavyLoad() throws InterruptedException { final CountDownLatch messageRecieved = new CountDownLatch(1000); - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RTopic topic1 = redisson1.getTopic("topic"); topic1.addListener(new MessageListener() { @Override @@ -221,7 +221,7 @@ public class RedissonTopicTest { } }); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RTopic topic2 = redisson2.getTopic("topic"); topic2.addListener(new MessageListener() { @Override @@ -246,7 +246,7 @@ public class RedissonTopicTest { } @Test public void testListenerRemove() throws InterruptedException { - Redisson redisson1 = BaseTest.createInstance(); + RedissonClient redisson1 = BaseTest.createInstance(); RTopic topic1 = redisson1.getTopic("topic"); int id = topic1.addListener(new MessageListener() { @Override @@ -255,7 +255,7 @@ public class RedissonTopicTest { } }); - Redisson redisson2 = BaseTest.createInstance(); + RedissonClient redisson2 = BaseTest.createInstance(); RTopic topic2 = redisson2.getTopic("topic"); topic1.removeListener(id); topic2.publish(new Message("123")); diff --git a/src/test/java/org/redisson/RedissonTwoLockedThread.java b/src/test/java/org/redisson/RedissonTwoLockedThread.java index 8a4ae2c5c..3062e2f59 100644 --- a/src/test/java/org/redisson/RedissonTwoLockedThread.java +++ b/src/test/java/org/redisson/RedissonTwoLockedThread.java @@ -26,7 +26,7 @@ public class RedissonTwoLockedThread { @Parameterized.Parameter(0) public Codec codec; - private Redisson redisson; + private RedissonClient redisson; @Before public void before() {