From 9bb32b4b2fa6705fcaee47c882ab32c88a51169b Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 27 Dec 2018 06:44:26 +0300 Subject: [PATCH] Fixed - `RMap.getAll` throws ClassCastException during transaction execution #1798 --- .../transaction/BaseTransactionalMap.java | 2 +- .../RedissonBaseTransactionalMapTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/transaction/BaseTransactionalMap.java b/redisson/src/main/java/org/redisson/transaction/BaseTransactionalMap.java index f0bdb6b68..16369b205 100644 --- a/redisson/src/main/java/org/redisson/transaction/BaseTransactionalMap.java +++ b/redisson/src/main/java/org/redisson/transaction/BaseTransactionalMap.java @@ -699,7 +699,7 @@ public class BaseTransactionalMap { } } - RFuture> future = ((RedissonMap)map).getAllOperationAsync(keysToLoad); + RFuture> future = ((RedissonMap)this.map).getAllOperationAsync(keysToLoad); future.addListener(new FutureListener>() { @Override public void operationComplete(Future> future) throws Exception { diff --git a/redisson/src/test/java/org/redisson/transaction/RedissonBaseTransactionalMapTest.java b/redisson/src/test/java/org/redisson/transaction/RedissonBaseTransactionalMapTest.java index b8b87cafe..f0671419c 100644 --- a/redisson/src/test/java/org/redisson/transaction/RedissonBaseTransactionalMapTest.java +++ b/redisson/src/test/java/org/redisson/transaction/RedissonBaseTransactionalMapTest.java @@ -2,7 +2,9 @@ package org.redisson.transaction; import static org.assertj.core.api.Assertions.assertThat; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -45,6 +47,19 @@ public abstract class RedissonBaseTransactionalMapTest extends BaseTest { assertThat(m.size()).isZero(); } + @Test + public void testGetAll() { + RMap m = getMap(); + m.put("1", "2"); + m.put("3", "4"); + + RTransaction t = redisson.createTransaction(TransactionOptions.defaults()); + RMap map = getTransactionalMap(t); + assertThat(map.getAll(new HashSet(Arrays.asList("1", "3"))).values()).containsOnly("2", "4"); + + t.commit(); + } + @Test public void testFastPut() throws InterruptedException { ExecutorService executor = Executors.newFixedThreadPool(2000);