#2389 - redis.clients.jedis.exceptions.JedisDataException: ERR wrong number of arguments for 'mget' command

This commit is contained in:
Rob Bygrave committed 2021-09-23 15:41:33 +12:00
1 parent 8ee67410f9
commit 5b07309f51
3 files changed
+26 -5

No files matched your search

@@ -349,12 +349,13 @@ final class BeanDescriptorCacheHelp<T> {
for (Object id : ids) { for (Object id : ids) {
keys.add(desc.cacheKey(id)); keys.add(desc.cacheKey(id));
} }
if (ids.isEmpty()) {
return new BeanCacheResult<>();
}
Map<Object, Object> beanDataMap = beanCache.getAll(keys); Map<Object, Object> beanDataMap = beanCache.getAll(keys);
if (beanLog.isTraceEnabled()) { if (beanLog.isTraceEnabled()) {
beanLog.trace(" MGET {}({}) - hits:{}", cacheName, ids, beanDataMap.keySet()); beanLog.trace(" MGET {}({}) - hits:{}", cacheName, ids, beanDataMap.keySet());
} }
BeanCacheResult<T> result = new BeanCacheResult<>(); BeanCacheResult<T> result = new BeanCacheResult<>();
for (Map.Entry<Object, Object> entry : beanDataMap.entrySet()) { for (Map.Entry<Object, Object> entry : beanDataMap.entrySet()) {
CachedBeanData cachedBeanData = (CachedBeanData) entry.getValue(); CachedBeanData cachedBeanData = (CachedBeanData) entry.getValue();
@@ -117,6 +117,9 @@ final class RedisCache implements ServerCache {
@Override @Override
public Map<Object, Object> getAll(Set<Object> keys) { public Map<Object, Object> getAll(Set<Object> keys) {
if (keys.isEmpty()) {
return Collections.emptyMap();
}
long start = System.nanoTime(); long start = System.nanoTime();
Map<Object, Object> map = new LinkedHashMap<>(); Map<Object, Object> map = new LinkedHashMap<>();
List<Object> keyList = new ArrayList<>(keys); List<Object> keyList = new ArrayList<>(keys);
@@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -18,6 +19,22 @@ import static org.assertj.core.api.Assertions.assertThat;
class IntegrationTest { class IntegrationTest {
@Test
void mget_when_emptyCollectionOfIds() {
List<RCust> f0 = new QRCust()
.setIdIn(Collections.emptyList())
.findList();
assertThat(f0).isEmpty();
List<RCust> f1 = new QRCust()
.id.in(Collections.emptyList())
.findList();
assertThat(f1).isEmpty();
}
@Test @Test
void mput_via_setIdIn() throws InterruptedException { void mput_via_setIdIn() throws InterruptedException {
@@ -187,8 +204,8 @@ class IntegrationTest {
private List<Person> nameStartsWith(String pattern) { private List<Person> nameStartsWith(String pattern) {
return new QPerson() return new QPerson()
.name.istartsWith(pattern) .name.istartsWith(pattern)
.setUseQueryCache(true) .setUseQueryCache(true)
.findList(); .findList();
} }
} }