From 7efc0da3d40626eb1cfa01e0a6d18120c3e8d0ea Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Sat, 4 Jul 2015 20:56:14 +0300 Subject: [PATCH 1/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f5981ea1..c4248723e 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Recent Releases ================================ ####Please Note: trunk is current development branch. -####??-Jul-2015 - version 1.3.0 +####04-Jul-2015 - version 1.3.0 released Feature - `RQueue.pollLastAndOfferFirstTo` method added Feature - `RObject.rename`, `RObject.renameAsync`, `RObject.renamenx`, `RObject.renamenxAsync` methods added Feature - `RList.getAsync`, `RList.addAsync`, `RList.addAllAsync` methods added From 1911428b24ad65477778fe26a9cbfb6d07df0396 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Sun, 5 Jul 2015 09:16:30 +0300 Subject: [PATCH 2/5] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c4248723e..d052f6511 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ Feature - `RList.getAsync`, `RList.addAsync`, `RList.addAllAsync` methods added Feature - `RObject.deleteAsync` method added Feature - unix sockets support via `Configuration.useLinuxNativeEpoll` setting Feature - Redisson.getTopicPattern method added (thanks to alex-sherwin) +Improvement - `RLock` auto-unlock then client lock-owner is gone (thanks to AndrewKolpakov) Improvement - lua scripts used instead of multi/exec commands to avoid connection errors during execution (thanks to AndrewKolpakov) Improvement - `RObject.delete` method now returns `boolean` status Improvement - propagate Command processing exceptions to ConnectionManager (thanks to marko-stankovic) From 9273a19b6cf24722966f92a731d0caf36f2b030e Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Mon, 6 Jul 2015 09:33:32 +0300 Subject: [PATCH 3/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d052f6511..2037a8e54 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Feature - `RObject.rename`, `RObject.renameAsync`, `RObject.renamenx`, `RObject. Feature - `RList.getAsync`, `RList.addAsync`, `RList.addAllAsync` methods added Feature - `RObject.deleteAsync` method added Feature - unix sockets support via `Configuration.useLinuxNativeEpoll` setting -Feature - Redisson.getTopicPattern method added (thanks to alex-sherwin) +Feature - `Redisson.getTopicPattern` method added (thanks to alex-sherwin) Improvement - `RLock` auto-unlock then client lock-owner is gone (thanks to AndrewKolpakov) Improvement - lua scripts used instead of multi/exec commands to avoid connection errors during execution (thanks to AndrewKolpakov) Improvement - `RObject.delete` method now returns `boolean` status From 7777a1221ec41c62e3abf84c2ea2e6ba39e75245 Mon Sep 17 00:00:00 2001 From: Gladmir Date: Mon, 6 Jul 2015 10:47:28 +0300 Subject: [PATCH 4/5] Update README.md Maven pom.xml section updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2037a8e54..73048a7bd 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ Include the following to your dependency list: org.redisson redisson - 1.2.1 + 1.3.0 ### Supported by From 88206c2ab541760715a9f948c81102630184da46 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 9 Jul 2015 09:27:27 +0300 Subject: [PATCH 5/5] poll npe fixed. #181 --- .../java/org/redisson/RedissonBlockingQueue.java | 7 ++++++- .../java/org/redisson/RedissonBlockingQueueTest.java | 12 ++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/redisson/RedissonBlockingQueue.java b/src/main/java/org/redisson/RedissonBlockingQueue.java index 24843ba86..a784e7a61 100644 --- a/src/main/java/org/redisson/RedissonBlockingQueue.java +++ b/src/main/java/org/redisson/RedissonBlockingQueue.java @@ -28,6 +28,7 @@ import org.redisson.async.SyncOperation; import org.redisson.connection.ConnectionManager; import org.redisson.core.RBlockingQueue; +import com.lambdaworks.redis.KeyValue; import com.lambdaworks.redis.RedisConnection; import org.redisson.core.RScript; @@ -71,7 +72,11 @@ public class RedissonBlockingQueue extends RedissonQueue implements RBlock return connectionManager.write(getName(), new SyncInterruptedOperation() { @Override public V execute(RedisConnection conn) throws InterruptedException { - return conn.blpop(unit.toSeconds(timeout), getName()).value; + KeyValue val = conn.blpop(unit.toSeconds(timeout), getName()); + if (val != null) { + return val.value; + } + return null; } }); } diff --git a/src/test/java/org/redisson/RedissonBlockingQueueTest.java b/src/test/java/org/redisson/RedissonBlockingQueueTest.java index 040cd1ff7..624d73aee 100644 --- a/src/test/java/org/redisson/RedissonBlockingQueueTest.java +++ b/src/test/java/org/redisson/RedissonBlockingQueueTest.java @@ -15,6 +15,14 @@ import org.redisson.core.*; public class RedissonBlockingQueueTest extends BaseTest { + @Test + public void testPoll() throws InterruptedException { + RBlockingQueue queue1 = redisson.getBlockingQueue("queue1"); + queue1.put(1); + Assert.assertEquals((Integer)1, queue1.poll(2, TimeUnit.SECONDS)); + Assert.assertNull(queue1.poll(2, TimeUnit.SECONDS)); + } + @Test public void testPollLastAndOfferFirstTo() throws InterruptedException { RBlockingQueue queue1 = redisson.getBlockingQueue("queue1"); @@ -30,7 +38,7 @@ public class RedissonBlockingQueueTest extends BaseTest { queue1.pollLastAndOfferFirstTo(queue2, 10, TimeUnit.SECONDS); MatcherAssert.assertThat(queue2, Matchers.contains(3, 4, 5, 6)); } - + @Test public void testAddOfferOrigin() { Queue queue = new LinkedList(); @@ -129,7 +137,7 @@ public class RedissonBlockingQueueTest extends BaseTest { final AtomicInteger counter = new AtomicInteger(); int total = 100; for (int i = 0; i < total; i++) { - // runnable won't be executed in any particular order, and hence, int value as well. + // runnable won't be executed in any particular order, and hence, int value as well. executor.submit(new Runnable() { @Override public void run() {