Skip to content

Commit fac7ddd

Browse files
authored
Merge pull request #2032 from sazzad16/unwatch-multi-pipeline
Add missing UNWATCH in Transaction and Pipeline
2 parents 13cfd1e + 251b532 commit fac7ddd

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,12 @@ public Response<String> watch(byte[]... keys) {
307307
return getResponse(BuilderFactory.STRING);
308308
}
309309

310+
@Override
311+
public Response<String> unwatch() {
312+
client.unwatch();
313+
return getResponse(BuilderFactory.STRING);
314+
}
315+
310316
@Override
311317
public Response<Long> zinterstore(String dstkey, String... sets) {
312318
client.zinterstore(dstkey, sets);

src/main/java/redis/clients/jedis/commands/MultiKeyBinaryRedisPipeline.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public interface MultiKeyBinaryRedisPipeline {
5858

5959
Response<String> watch(byte[]... keys);
6060

61+
Response<String> unwatch();
62+
6163
Response<Long> zinterstore(byte[] dstkey, byte[]... sets);
6264

6365
Response<Long> zinterstore(byte[] dstkey, ZParams params, byte[]... sets);

src/main/java/redis/clients/jedis/commands/MultiKeyCommandsPipeline.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public interface MultiKeyCommandsPipeline {
5757

5858
Response<String> watch(String... keys);
5959

60+
Response<String> unwatch();
61+
6062
Response<Long> zinterstore(String dstkey, String... sets);
6163

6264
Response<Long> zinterstore(String dstkey, ZParams params, String... sets);

src/test/java/redis/clients/jedis/tests/PipeliningTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,24 @@ public void multiWithSync() {
308308
assertEquals("world", r3.get());
309309
}
310310

311+
@Test
312+
public void multiWithWatch() {
313+
String key = "foo";
314+
String val = "bar";
315+
List<Object> expect = new ArrayList<>();
316+
List<Object> expMulti = new ArrayList<>();
317+
318+
Pipeline pipe = jedis.pipelined();
319+
pipe.set(key, val); expect.add("OK");
320+
pipe.watch(key); expect.add("OK");
321+
pipe.multi(); expect.add("OK");
322+
pipe.unwatch(); expect.add("QUEUED"); expMulti.add("OK");
323+
pipe.get(key); expect.add("QUEUED"); expMulti.add(val);
324+
pipe.exec(); expect.add(expMulti);
325+
326+
assertEquals(expect, pipe.syncAndReturnAll());
327+
}
328+
311329
@Test(expected = JedisDataException.class)
312330
public void pipelineExecShoudThrowJedisDataExceptionWhenNotInMulti() {
313331
Pipeline pipeline = jedis.pipelined();

0 commit comments

Comments
 (0)