diff --git a/redisson/checkstyle.xml b/redisson/checkstyle.xml index 4cc02871a..8eaf697e4 100644 --- a/redisson/checkstyle.xml +++ b/redisson/checkstyle.xml @@ -72,7 +72,7 @@ - + @@ -169,7 +169,9 @@ - + + + @@ -186,8 +188,9 @@ - - + + + diff --git a/redisson/pom.xml b/redisson/pom.xml index 1c9d1315b..4c7176cdd 100644 --- a/redisson/pom.xml +++ b/redisson/pom.xml @@ -360,7 +360,7 @@ - **/org/redisson/api/**/*.java + **/org/redisson/api/**/*.java,**/org/redisson/cache/**/*.java true false /checkstyle.xml diff --git a/redisson/src/main/java/org/redisson/cache/AbstractCacheMap.java b/redisson/src/main/java/org/redisson/cache/AbstractCacheMap.java index 5de97fb79..3ebb9d01b 100644 --- a/redisson/src/main/java/org/redisson/cache/AbstractCacheMap.java +++ b/redisson/src/main/java/org/redisson/cache/AbstractCacheMap.java @@ -300,7 +300,7 @@ public abstract class AbstractCacheMap implements Cache { abstract class MapIterator implements Iterator { - final Iterator>> keyIterator = map.entrySet().iterator(); + private final Iterator>> keyIterator = map.entrySet().iterator(); Map.Entry> mapEntry; @@ -416,12 +416,12 @@ public abstract class AbstractCacheMap implements Cache { } - final class EntrySet extends AbstractSet> { + final class EntrySet extends AbstractSet> { - public final Iterator> iterator() { - return new MapIterator>() { + public Iterator> iterator() { + return new MapIterator>() { @Override - public Map.Entry next() { + public Map.Entry next() { if (mapEntry == null) { throw new NoSuchElementException(); } @@ -442,18 +442,18 @@ public abstract class AbstractCacheMap implements Cache { }; } - public final boolean contains(Object o) { + public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry) o; + Map.Entry e = (Map.Entry) o; Object key = e.getKey(); V value = get(key); return value != null && value.equals(e); } - public final boolean remove(Object o) { + public boolean remove(Object o) { if (o instanceof Map.Entry) { - Map.Entry e = (Map.Entry) o; + Map.Entry e = (Map.Entry) o; Object key = e.getKey(); Object value = e.getValue(); return AbstractCacheMap.this.map.remove(key, value); @@ -461,11 +461,11 @@ public abstract class AbstractCacheMap implements Cache { return false; } - public final int size() { + public int size() { return AbstractCacheMap.this.size(); } - public final void clear() { + public void clear() { AbstractCacheMap.this.clear(); } diff --git a/redisson/src/main/java/org/redisson/cache/LFUCacheMap.java b/redisson/src/main/java/org/redisson/cache/LFUCacheMap.java index b9742df89..c5dac33f6 100644 --- a/redisson/src/main/java/org/redisson/cache/LFUCacheMap.java +++ b/redisson/src/main/java/org/redisson/cache/LFUCacheMap.java @@ -59,8 +59,8 @@ public class LFUCacheMap extends AbstractCacheMap { public static class LFUCachedValue extends StdCachedValue { - Long id; - long accessCount; + private final Long id; + private long accessCount; public LFUCachedValue(long id, Object key, Object value, long ttl, long maxIdleTime) { super(key, value, ttl, maxIdleTime); @@ -87,13 +87,13 @@ public class LFUCacheMap extends AbstractCacheMap { @Override protected void onValueCreate(CachedValue value) { - MapKey key = toKey((LFUCachedValue)value); - accessMap.put(key, (LFUCachedValue)value); + MapKey key = toKey((LFUCachedValue) value); + accessMap.put(key, (LFUCachedValue) value); } @Override protected void onValueRead(CachedValue value) { - addAccessCount((LFUCachedValue)value, 1); + addAccessCount((LFUCachedValue) value, 1); } private MapKey toKey(LFUCachedValue value) { @@ -103,7 +103,7 @@ public class LFUCacheMap extends AbstractCacheMap { @Override protected void onValueRemove(CachedValue value) { synchronized (value) { - MapKey key = toKey((LFUCachedValue)value); + MapKey key = toKey((LFUCachedValue) value); accessMap.remove(key); } } diff --git a/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java b/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java index 711212e1f..ec2e0c8c6 100644 --- a/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java +++ b/redisson/src/main/java/org/redisson/cache/LRUCacheMap.java @@ -22,7 +22,6 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicLong; /** @@ -77,7 +76,7 @@ public class LRUCacheMap extends AbstractCacheMap { protected void onMapFull() { int startIndex = -1; while (true) { - int queueIndex = (int)Math.abs(index.incrementAndGet() % queues.size()); + int queueIndex = (int) Math.abs(index.incrementAndGet() % queues.size()); if (queueIndex == startIndex) { return; } diff --git a/redisson/src/main/java/org/redisson/cache/LocalCacheListener.java b/redisson/src/main/java/org/redisson/cache/LocalCacheListener.java index 156344aa5..265e5ba9d 100644 --- a/redisson/src/main/java/org/redisson/cache/LocalCacheListener.java +++ b/redisson/src/main/java/org/redisson/cache/LocalCacheListener.java @@ -111,38 +111,7 @@ public abstract class LocalCacheListener { // check if instance has already been used && lastInvalidate > 0) { - if (System.currentTimeMillis() - lastInvalidate > cacheUpdateLogTime) { - cache.clear(); - return; - } - - object.isExistsAsync().onComplete((res, e) -> { - if (e != null) { - log.error("Can't check existance", e); - return; - } - - if (!res) { - cache.clear(); - return; - } - - RScoredSortedSet logs = new RedissonScoredSortedSet(ByteArrayCodec.INSTANCE, commandExecutor, getUpdatesLogName(), null); - logs.valueRangeAsync(lastInvalidate, true, Double.POSITIVE_INFINITY, true) - .onComplete((r, ex) -> { - if (ex != null) { - log.error("Can't load update log", ex); - return; - } - - for (byte[] entry : r) { - byte[] keyHash = Arrays.copyOf(entry, 16); - CacheKey key = new CacheKey(keyHash); - cache.remove(key); - } - }); - }); - + loadAfterReconnection(); } } }); @@ -181,7 +150,7 @@ public abstract class LocalCacheListener { } if (msg instanceof LocalCachedMapInvalidate) { - LocalCachedMapInvalidate invalidateMsg = (LocalCachedMapInvalidate)msg; + LocalCachedMapInvalidate invalidateMsg = (LocalCachedMapInvalidate) msg; if (!Arrays.equals(invalidateMsg.getExcludedId(), instanceId)) { for (byte[] keyHash : invalidateMsg.getKeyHashes()) { CacheKey key = new CacheKey(keyHash); @@ -282,4 +251,38 @@ public abstract class LocalCacheListener { return RedissonObject.prefixName("redisson__cache_updates_log", name); } + private void loadAfterReconnection() { + if (System.currentTimeMillis() - lastInvalidate > cacheUpdateLogTime) { + cache.clear(); + return; + } + + object.isExistsAsync().onComplete((res, e) -> { + if (e != null) { + log.error("Can't check existance", e); + return; + } + + if (!res) { + cache.clear(); + return; + } + + RScoredSortedSet logs = new RedissonScoredSortedSet(ByteArrayCodec.INSTANCE, commandExecutor, getUpdatesLogName(), null); + logs.valueRangeAsync(lastInvalidate, true, Double.POSITIVE_INFINITY, true) + .onComplete((r, ex) -> { + if (ex != null) { + log.error("Can't load update log", ex); + return; + } + + for (byte[] entry : r) { + byte[] keyHash = Arrays.copyOf(entry, 16); + CacheKey key = new CacheKey(keyHash); + cache.remove(key); + } + }); + }); + } + } diff --git a/redisson/src/main/java/org/redisson/cache/LocalCacheView.java b/redisson/src/main/java/org/redisson/cache/LocalCacheView.java index 5d4a68e84..14bf4972f 100644 --- a/redisson/src/main/java/org/redisson/cache/LocalCacheView.java +++ b/redisson/src/main/java/org/redisson/cache/LocalCacheView.java @@ -55,7 +55,9 @@ public class LocalCacheView { @Override public Iterator iterator() { return new Iterator() { - Iterator iter = cache.values().iterator(); + + private Iterator iter = cache.values().iterator(); + @Override public boolean hasNext() { return iter.hasNext(); @@ -106,7 +108,9 @@ public class LocalCacheView { @Override public Iterator iterator() { return new Iterator() { - Iterator iter = cache.values().iterator(); + + private Iterator iter = cache.values().iterator(); + @Override public boolean hasNext() { return iter.hasNext(); @@ -146,21 +150,23 @@ public class LocalCacheView { return new LocalEntrySet(); } - final class LocalEntrySet extends AbstractSet> { + final class LocalEntrySet extends AbstractSet> { @Override - public Iterator> iterator() { - return new Iterator>() { - Iterator iter = cache.values().iterator(); + public Iterator> iterator() { + return new Iterator>() { + + private Iterator iter = cache.values().iterator(); + @Override public boolean hasNext() { return iter.hasNext(); } @Override - public Map.Entry next() { + public Map.Entry next() { CacheValue e = iter.next(); - return new AbstractMap.SimpleEntry((K)e.getKey(), (V)e.getValue()); + return new AbstractMap.SimpleEntry((K) e.getKey(), (V) e.getValue()); } @Override @@ -174,7 +180,7 @@ public class LocalCacheView { public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry) o; + Map.Entry e = (Map.Entry) o; CacheKey cacheKey = toCacheKey(e.getKey()); CacheValue entry = cache.get(cacheKey); return entry != null && entry.getValue().equals(e.getValue()); @@ -183,7 +189,7 @@ public class LocalCacheView { @Override public boolean remove(Object o) { if (o instanceof Map.Entry) { - Map.Entry e = (Map.Entry) o; + Map.Entry e = (Map.Entry) o; CacheKey cacheKey = toCacheKey(e.getKey()); return cache.remove(cacheKey) != null; } @@ -206,7 +212,7 @@ public class LocalCacheView { return new LocalMap(); } - final class LocalMap extends AbstractMap { + final class LocalMap extends AbstractMap { @Override public V get(Object key) { diff --git a/redisson/src/main/java/org/redisson/cache/StdCachedValue.java b/redisson/src/main/java/org/redisson/cache/StdCachedValue.java index aef595357..e7c145375 100644 --- a/redisson/src/main/java/org/redisson/cache/StdCachedValue.java +++ b/redisson/src/main/java/org/redisson/cache/StdCachedValue.java @@ -21,14 +21,14 @@ package org.redisson.cache; public class StdCachedValue implements CachedValue { - protected final K key; - protected final V value; + private final K key; + private final V value; - long ttl; - long maxIdleTime; + private long ttl; + private long maxIdleTime; - long creationTime; - long lastAccess; + private long creationTime; + private long lastAccess; public StdCachedValue(K key, V value, long ttl, long maxIdleTime) { this.value = value;