From ff16c2bcfd96919693e68f19e3db4f8965b12681 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Sat, 5 Jan 2019 09:49:07 +0300 Subject: [PATCH] Fixed - LRUCacheMap throws ArrayIndexOutOfBoundsException. #1836 --- redisson/src/main/java/org/redisson/cache/LRUCacheMap.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java b/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java index 55b3bd007..b9a5db5a9 100644 --- a/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java +++ b/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java @@ -15,6 +15,7 @@ */ package org.redisson.cache; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -36,7 +37,7 @@ public class LRUCacheMap extends AbstractCacheMap { private final AtomicLong index = new AtomicLong(); private final List>> queues = - new CopyOnWriteArrayList>>(); + new ArrayList>>(); public LRUCacheMap(int size, long timeToLiveInMillis, long maxIdleInMillis) { super(size, timeToLiveInMillis, maxIdleInMillis); @@ -54,7 +55,7 @@ public class LRUCacheMap extends AbstractCacheMap { } private Collection> getQueue(CachedValue value) { - return queues.get(value.hashCode() % queues.size()); + return queues.get(Math.abs(value.hashCode() % queues.size())); } @Override