From 569a22f07373ade19ccb5b5bd638d6f5eddd09d2 Mon Sep 17 00:00:00 2001 From: M Sazzadul Hoque <7600764+sazzad16@users.noreply.github.com> Date: Sun, 11 Apr 2021 19:59:38 +0600 Subject: [PATCH 1/2] Deprecate Remove ShardedJedisPipeline class #2500 --- .../clients/jedis/BinaryShardedJedis.java | 6 ++++ .../clients/jedis/ShardedJedisPipeline.java | 5 +++ .../jedis/tests/ShardedJedisPoolTest.java | 34 ------------------- ...dJedisPoolWithCompleteCredentialsTest.java | 34 ------------------- 4 files changed, 11 insertions(+), 68 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index edc7ac47a1..a06f75df76 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -875,6 +875,12 @@ public Long linsert(final byte[] key, final ListPosition where, final byte[] piv return j.linsert(key, where, pivot, value); } + /** + * @return + * @deprecated The support of {@link ShardedJedisPipeline} and this method will be removed in next + * major release. + */ + @Deprecated public ShardedJedisPipeline pipelined() { ShardedJedisPipeline pipeline = new ShardedJedisPipeline(); pipeline.setShardedJedis(this); diff --git a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java index 6f99fc3223..13a8ade95a 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java +++ b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java @@ -5,6 +5,11 @@ import java.util.List; import java.util.Queue; +/** + * @deprecated The support of {@link ShardedJedisPipeline} will be removed in next major release, + * due to several bugs and implementation issue. + */ +@Deprecated public class ShardedJedisPipeline extends PipelineBase { private BinaryShardedJedis jedis; private List results = new ArrayList<>(); diff --git a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java index f0fb5489e7..acf5d40161 100644 --- a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java +++ b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java @@ -17,7 +17,6 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.ShardedJedis; -import redis.clients.jedis.ShardedJedisPipeline; import redis.clients.jedis.ShardedJedisPool; import redis.clients.jedis.exceptions.JedisExhaustedPoolException; @@ -202,39 +201,6 @@ public void startWithUrl() throws URISyntaxException { assertEquals("bar", jedis.get("foo")); } - @Test - public void returnResourceShouldResetState() throws URISyntaxException { - GenericObjectPoolConfig config = new GenericObjectPoolConfig(); - config.setMaxTotal(1); - config.setBlockWhenExhausted(false); - - List shards = new ArrayList(); - shards.add(new JedisShardInfo(new URI("redis://:foobared@localhost:6380"))); - shards.add(new JedisShardInfo(new URI("redis://:foobared@localhost:6379"))); - - ShardedJedisPool pool = new ShardedJedisPool(config, shards); - - ShardedJedis jedis = pool.getResource(); - jedis.set("pipelined", String.valueOf(0)); - jedis.set("pipelined2", String.valueOf(0)); - - ShardedJedisPipeline pipeline = jedis.pipelined(); - - pipeline.incr("pipelined"); - pipeline.incr("pipelined2"); - - jedis.resetState(); - - pipeline = jedis.pipelined(); - pipeline.incr("pipelined"); - pipeline.incr("pipelined2"); - List results = pipeline.syncAndReturnAll(); - - assertEquals(2, results.size()); - jedis.close(); - pool.destroy(); - } - @Test public void checkResourceIsCloseable() throws URISyntaxException { GenericObjectPoolConfig config = new GenericObjectPoolConfig(); diff --git a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java index d482aae95f..aaf38b499d 100644 --- a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java +++ b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java @@ -22,7 +22,6 @@ * This test is only executed when the server/cluster is Redis 6. or more. */ public class ShardedJedisPoolWithCompleteCredentialsTest { - private static HostAndPort hnp = HostAndPortUtil.getRedisServers().get(0); private static HostAndPort redis1 = HostAndPortUtil.getRedisServers().get(0); private static HostAndPort redis2 = HostAndPortUtil.getRedisServers().get(1); @@ -245,39 +244,6 @@ public void connectWithURICredentials() throws URISyntaxException { j2.aclDelUser("alice"); } - @Test - public void returnResourceShouldResetState() throws URISyntaxException { - GenericObjectPoolConfig config = new GenericObjectPoolConfig<>(); - config.setMaxTotal(1); - config.setBlockWhenExhausted(false); - - List shards = new ArrayList(); - shards.add(new JedisShardInfo(new URI("redis://default:foobared@localhost:6380"))); - shards.add(new JedisShardInfo(new URI("redis://default:foobared@localhost:6379"))); - - ShardedJedisPool pool = new ShardedJedisPool(config, shards); - - ShardedJedis jedis = pool.getResource(); - jedis.set("pipelined", String.valueOf(0)); - jedis.set("pipelined2", String.valueOf(0)); - - ShardedJedisPipeline pipeline = jedis.pipelined(); - - pipeline.incr("pipelined"); - pipeline.incr("pipelined2"); - - jedis.resetState(); - - pipeline = jedis.pipelined(); - pipeline.incr("pipelined"); - pipeline.incr("pipelined2"); - List results = pipeline.syncAndReturnAll(); - - assertEquals(2, results.size()); - jedis.close(); - pool.destroy(); - } - @Test public void checkResourceIsCloseable() throws URISyntaxException { GenericObjectPoolConfig config = new GenericObjectPoolConfig<>(); From 436e421f2a2632220d9eece95d8cc2942183b305 Mon Sep 17 00:00:00 2001 From: M Sazzadul Hoque <7600764+sazzad16@users.noreply.github.com> Date: Wed, 14 Apr 2021 13:55:08 +0600 Subject: [PATCH 2/2] putting back the tests --- .../jedis/tests/ShardedJedisPoolTest.java | 34 +++++++++++++++++++ ...dJedisPoolWithCompleteCredentialsTest.java | 34 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java index acf5d40161..f0fb5489e7 100644 --- a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java +++ b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java @@ -17,6 +17,7 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.ShardedJedis; +import redis.clients.jedis.ShardedJedisPipeline; import redis.clients.jedis.ShardedJedisPool; import redis.clients.jedis.exceptions.JedisExhaustedPoolException; @@ -201,6 +202,39 @@ public void startWithUrl() throws URISyntaxException { assertEquals("bar", jedis.get("foo")); } + @Test + public void returnResourceShouldResetState() throws URISyntaxException { + GenericObjectPoolConfig config = new GenericObjectPoolConfig(); + config.setMaxTotal(1); + config.setBlockWhenExhausted(false); + + List shards = new ArrayList(); + shards.add(new JedisShardInfo(new URI("redis://:foobared@localhost:6380"))); + shards.add(new JedisShardInfo(new URI("redis://:foobared@localhost:6379"))); + + ShardedJedisPool pool = new ShardedJedisPool(config, shards); + + ShardedJedis jedis = pool.getResource(); + jedis.set("pipelined", String.valueOf(0)); + jedis.set("pipelined2", String.valueOf(0)); + + ShardedJedisPipeline pipeline = jedis.pipelined(); + + pipeline.incr("pipelined"); + pipeline.incr("pipelined2"); + + jedis.resetState(); + + pipeline = jedis.pipelined(); + pipeline.incr("pipelined"); + pipeline.incr("pipelined2"); + List results = pipeline.syncAndReturnAll(); + + assertEquals(2, results.size()); + jedis.close(); + pool.destroy(); + } + @Test public void checkResourceIsCloseable() throws URISyntaxException { GenericObjectPoolConfig config = new GenericObjectPoolConfig(); diff --git a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java index aaf38b499d..d482aae95f 100644 --- a/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java +++ b/src/test/java/redis/clients/jedis/tests/ShardedJedisPoolWithCompleteCredentialsTest.java @@ -22,6 +22,7 @@ * This test is only executed when the server/cluster is Redis 6. or more. */ public class ShardedJedisPoolWithCompleteCredentialsTest { + private static HostAndPort hnp = HostAndPortUtil.getRedisServers().get(0); private static HostAndPort redis1 = HostAndPortUtil.getRedisServers().get(0); private static HostAndPort redis2 = HostAndPortUtil.getRedisServers().get(1); @@ -244,6 +245,39 @@ public void connectWithURICredentials() throws URISyntaxException { j2.aclDelUser("alice"); } + @Test + public void returnResourceShouldResetState() throws URISyntaxException { + GenericObjectPoolConfig config = new GenericObjectPoolConfig<>(); + config.setMaxTotal(1); + config.setBlockWhenExhausted(false); + + List shards = new ArrayList(); + shards.add(new JedisShardInfo(new URI("redis://default:foobared@localhost:6380"))); + shards.add(new JedisShardInfo(new URI("redis://default:foobared@localhost:6379"))); + + ShardedJedisPool pool = new ShardedJedisPool(config, shards); + + ShardedJedis jedis = pool.getResource(); + jedis.set("pipelined", String.valueOf(0)); + jedis.set("pipelined2", String.valueOf(0)); + + ShardedJedisPipeline pipeline = jedis.pipelined(); + + pipeline.incr("pipelined"); + pipeline.incr("pipelined2"); + + jedis.resetState(); + + pipeline = jedis.pipelined(); + pipeline.incr("pipelined"); + pipeline.incr("pipelined2"); + List results = pipeline.syncAndReturnAll(); + + assertEquals(2, results.size()); + jedis.close(); + pool.destroy(); + } + @Test public void checkResourceIsCloseable() throws URISyntaxException { GenericObjectPoolConfig config = new GenericObjectPoolConfig<>();