diff --git a/Makefile b/Makefile index ddc298a..a5328e2 100644 --- a/Makefile +++ b/Makefile @@ -180,9 +180,9 @@ stop: kill `cat /tmp/sentinel1.pid` kill `cat /tmp/sentinel2.pid` kill `cat /tmp/sentinel3.pid` - #kill `cat /tmp/redis_cluster_node1.pid` || true - #kill `cat /tmp/redis_cluster_node2.pid` || true - #kill `cat /tmp/redis_cluster_node3.pid` || true + kill `cat /tmp/redis_cluster_node1.pid` || true + kill `cat /tmp/redis_cluster_node2.pid` || true + kill `cat /tmp/redis_cluster_node3.pid` || true rm -f /tmp/redis_cluster_node1.conf rm -f /tmp/redis_cluster_node2.conf rm -f /tmp/redis_cluster_node3.conf diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 991d046..173efbe 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -1696,6 +1696,13 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, return new Transaction(client); } + @Deprecated + /** + * This method is deprecated due to its error prone + * and will be removed on next major release + * You can use multi() instead + * @see https://github.com/xetorthio/jedis/pull/498 + */ public List multi(final TransactionBlock jedisTransaction) { List results = null; jedisTransaction.setClient(client); @@ -2119,14 +2126,12 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, return client.getStatusCodeReply(); } + @Deprecated /** - * Starts a pipeline, which is a very efficient way to send lots of command - * and read all the responses when you finish sending them. Try to avoid - * this version and use pipelined() when possible as it will give better - * performance. - * - * @param jedisPipeline - * @return The results of the command in the same order you've run them. + * This method is deprecated due to its error prone with multi + * and will be removed on next major release + * You can use pipelined() instead + * @see https://github.com/xetorthio/jedis/pull/498 */ public List pipelined(final PipelineBlock jedisPipeline) { jedisPipeline.setClient(client); diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 382d48b..5895f20 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -482,6 +482,12 @@ public class BinaryShardedJedis extends Sharded } @Deprecated + /** + * This method is deprecated due to its error prone with multi + * and will be removed on next major release + * You can use pipelined() instead + * @see https://github.com/xetorthio/jedis/pull/498 + */ public List pipelined(ShardedJedisPipeline shardedJedisPipeline) { shardedJedisPipeline.setShardedJedis(this); shardedJedisPipeline.execute(); diff --git a/src/main/java/redis/clients/jedis/PipelineBlock.java b/src/main/java/redis/clients/jedis/PipelineBlock.java index 9cf2f7e..50181ba 100644 --- a/src/main/java/redis/clients/jedis/PipelineBlock.java +++ b/src/main/java/redis/clients/jedis/PipelineBlock.java @@ -1,5 +1,11 @@ package redis.clients.jedis; +@Deprecated +/** + * This method is deprecated due to its error prone with multi + * and will be removed on next major release + * @see https://github.com/xetorthio/jedis/pull/498 + */ public abstract class PipelineBlock extends Pipeline { public abstract void execute(); } diff --git a/src/main/java/redis/clients/jedis/TransactionBlock.java b/src/main/java/redis/clients/jedis/TransactionBlock.java index 87df232..86f7c44 100644 --- a/src/main/java/redis/clients/jedis/TransactionBlock.java +++ b/src/main/java/redis/clients/jedis/TransactionBlock.java @@ -2,6 +2,12 @@ package redis.clients.jedis; import redis.clients.jedis.exceptions.JedisException; +@Deprecated +/** + * This class is deprecated due to its error prone + * and will be removed on next major release + * @see https://github.com/xetorthio/jedis/pull/498 + */ public abstract class TransactionBlock extends Transaction { public TransactionBlock(Client client) { super(client); diff --git a/src/test/java/redis/clients/jedis/tests/PipeliningTest.java b/src/test/java/redis/clients/jedis/tests/PipeliningTest.java index 2b3eabe..aed67dc 100755 --- a/src/test/java/redis/clients/jedis/tests/PipeliningTest.java +++ b/src/test/java/redis/clients/jedis/tests/PipeliningTest.java @@ -15,7 +15,6 @@ import org.junit.Test; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; -import redis.clients.jedis.PipelineBlock; import redis.clients.jedis.Response; import redis.clients.jedis.Tuple; import redis.clients.jedis.exceptions.JedisDataException; @@ -35,21 +34,10 @@ public class PipeliningTest extends Assert { @Test public void pipeline() throws UnsupportedEncodingException { - List results = jedis.pipelined(new PipelineBlock() { - public void execute() { - set("foo", "bar"); - get("foo"); - } - }); - - assertEquals(2, results.size()); - assertEquals("OK", results.get(0)); - assertEquals("bar", results.get(1)); - Pipeline p = jedis.pipelined(); p.set("foo", "bar"); p.get("foo"); - results = p.syncAndReturnAll(); + List results = p.syncAndReturnAll(); assertEquals(2, results.size()); assertEquals("OK", results.get(0)); diff --git a/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java index cc36a7f..ae98a8a 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java @@ -16,9 +16,7 @@ import redis.clients.jedis.Pipeline; import redis.clients.jedis.Protocol.Keyword; import redis.clients.jedis.Response; import redis.clients.jedis.Transaction; -import redis.clients.jedis.TransactionBlock; import redis.clients.jedis.exceptions.JedisDataException; -import redis.clients.jedis.exceptions.JedisException; public class TransactionCommandsTest extends JedisCommandTestBase { final byte[] bfoo = { 0x01, 0x02, 0x03, 0x04 }; @@ -73,87 +71,6 @@ public class TransactionCommandsTest extends JedisCommandTestBase { } - @Test - public void multiBlock() { - List response = jedis.multi(new TransactionBlock() { - @Override - public void execute() { - sadd("foo", "a"); - sadd("foo", "b"); - scard("foo"); - } - }); - - List expected = new ArrayList(); - expected.add(1L); - expected.add(1L); - expected.add(2L); - assertEquals(expected, response); - - // Binary - response = jedis.multi(new TransactionBlock() { - @Override - public void execute() { - sadd(bfoo, ba); - sadd(bfoo, bb); - scard(bfoo); - } - }); - - expected = new ArrayList(); - expected.add(1L); - expected.add(1L); - expected.add(2L); - assertEquals(expected, response); - - } - - @Test - public void multiBlockWithErrorRedisDiscardsTransaction() throws Exception { - // Transaction with error - Redis discards transaction automatically - // (Syntax Error, etc.) - TransactionBlock tb = new TransactionBlock() { - - @Override - public void execute() throws JedisException { - del("hello"); - hmset("hello", new HashMap()); - } - }; - - try { - jedis.multi(tb); - } catch (JedisDataException e) { - assertTrue(e.getMessage().contains("EXECABORT")); - } catch (Exception e) { - throw e; - } - } - - @Test - public void multiBlockWithErrorRedisForceToExecuteAllCommands() - throws Exception { - // Transaction with error - Redis doesn't roll back (Type Error, - // Deletion of non-exist key, etc.) - jedis.del("hello2"); - TransactionBlock tb2 = new TransactionBlock() { - - @Override - public void execute() throws JedisException { - del("hello2"); - set("hello2", "hello"); - sadd("hello2", "hello2"); - } - }; - - List responses = jedis.multi(tb2); - assertEquals("OK", responses.get(1)); - assertEquals(JedisDataException.class, responses.get(2).getClass()); - - Exception exc = (JedisDataException) responses.get(2); - assertTrue(exc.getMessage().contains("WRONGTYPE")); - } - @Test public void watch() throws UnknownHostException, IOException { jedis.watch("mykey", "somekey");