From 29a10a12eab7492b14c3ae732487be56d8764f0c Mon Sep 17 00:00:00 2001 From: Ahmet Mircik Date: Wed, 13 Nov 2019 14:51:05 +0300 Subject: [PATCH] Address Matko review comments --- .../cache/CacheEvictionPolicyComparator.java | 1 + .../cache/impl/AbstractCacheRecordStore.java | 2 +- .../impl/record/AbstractCacheRecord.java | 30 ++++++++----------- .../cache/impl/record/CacheRecord.java | 9 ++---- .../map/MapEvictionPolicyComparator.java | 1 + .../eviction/EvictionPolicyComparator.java | 1 + .../eviction/EvictionPolicyEvaluatorTest.java | 6 ++-- 7 files changed, 23 insertions(+), 27 deletions(-) diff --git a/hazelcast/src/main/java/com/hazelcast/cache/CacheEvictionPolicyComparator.java b/hazelcast/src/main/java/com/hazelcast/cache/CacheEvictionPolicyComparator.java index 52f1c7e386c58..15136245f082b 100644 --- a/hazelcast/src/main/java/com/hazelcast/cache/CacheEvictionPolicyComparator.java +++ b/hazelcast/src/main/java/com/hazelcast/cache/CacheEvictionPolicyComparator.java @@ -27,6 +27,7 @@ * @see EvictionPolicyComparator * @see CacheEntryView */ +@FunctionalInterface public interface CacheEvictionPolicyComparator extends EvictionPolicyComparator> { diff --git a/hazelcast/src/main/java/com/hazelcast/cache/impl/AbstractCacheRecordStore.java b/hazelcast/src/main/java/com/hazelcast/cache/impl/AbstractCacheRecordStore.java index 77220404b3afb..fe35a3991f07e 100644 --- a/hazelcast/src/main/java/com/hazelcast/cache/impl/AbstractCacheRecordStore.java +++ b/hazelcast/src/main/java/com/hazelcast/cache/impl/AbstractCacheRecordStore.java @@ -588,7 +588,7 @@ protected long updateAccessDuration(Data key, R record, ExpiryPolicy expiryPolic } protected long onRecordAccess(Data key, R record, ExpiryPolicy expiryPolicy, long now) { - record.setAccessTime(now); + record.setLastAccessTime(now); record.incrementHits(); return updateAccessDuration(key, record, expiryPolicy, now); } diff --git a/hazelcast/src/main/java/com/hazelcast/cache/impl/record/AbstractCacheRecord.java b/hazelcast/src/main/java/com/hazelcast/cache/impl/record/AbstractCacheRecord.java index a4ca4fc4554dc..be84fb5133eec 100644 --- a/hazelcast/src/main/java/com/hazelcast/cache/impl/record/AbstractCacheRecord.java +++ b/hazelcast/src/main/java/com/hazelcast/cache/impl/record/AbstractCacheRecord.java @@ -34,9 +34,10 @@ public abstract class AbstractCacheRecord implements CacheRecord, IdentifiedDataSerializable { protected long creationTime = TIME_NOT_AVAILABLE; + + protected volatile int hits; protected volatile long expirationTime = TIME_NOT_AVAILABLE; - protected volatile long accessTime = TIME_NOT_AVAILABLE; - protected volatile int accessHit; + protected volatile long lastAccessTime = TIME_NOT_AVAILABLE; protected AbstractCacheRecord() { } @@ -67,22 +68,22 @@ public void setCreationTime(long creationTime) { @Override public long getLastAccessTime() { - return accessTime; + return lastAccessTime; } @Override - public void setAccessTime(long accessTime) { - this.accessTime = accessTime; + public void setLastAccessTime(long lastAccessTime) { + this.lastAccessTime = lastAccessTime; } @Override public long getHits() { - return accessHit; + return hits; } @Override public void setHits(long accessHit) { - this.accessHit = accessHit > Integer.MAX_VALUE + this.hits = accessHit > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) accessHit; } @@ -90,12 +91,7 @@ public void setHits(long accessHit) { @SuppressFBWarnings(value = "VO_VOLATILE_INCREMENT", justification = "CacheRecord can be accessed by only its own partition thread.") public void incrementHits() { - accessHit++; - } - - @Override - public void resetHits() { - accessHit = 0; + hits++; } @Override @@ -107,16 +103,16 @@ public boolean isExpiredAt(long now) { public void writeData(ObjectDataOutput out) throws IOException { out.writeLong(creationTime); out.writeLong(expirationTime); - out.writeLong(accessTime); - out.writeInt(accessHit); + out.writeLong(lastAccessTime); + out.writeInt(hits); } @Override public void readData(ObjectDataInput in) throws IOException { creationTime = in.readLong(); expirationTime = in.readLong(); - accessTime = in.readLong(); - accessHit = in.readInt(); + lastAccessTime = in.readLong(); + hits = in.readInt(); } @Override diff --git a/hazelcast/src/main/java/com/hazelcast/cache/impl/record/CacheRecord.java b/hazelcast/src/main/java/com/hazelcast/cache/impl/record/CacheRecord.java index ada1c37181d90..0c0158100a935 100644 --- a/hazelcast/src/main/java/com/hazelcast/cache/impl/record/CacheRecord.java +++ b/hazelcast/src/main/java/com/hazelcast/cache/impl/record/CacheRecord.java @@ -53,7 +53,7 @@ public interface CacheRecord extends Expirable, Evictable { * * @param time the latest access time of this {@link Evictable} in milliseconds */ - void setAccessTime(long time); + void setLastAccessTime(long time); /** * Sets the access hit count of this {@link Evictable}. @@ -67,19 +67,16 @@ public interface CacheRecord extends Expirable, Evictable { */ void incrementHits(); - /** - * Resets the access hit count of this {@link Evictable} to 0. - */ - void resetHits(); - /** * Sets the expiry policy for this record. + * * @param expiryPolicy */ void setExpiryPolicy(E expiryPolicy); /** * Gets the expiryPolicy associated with this record. + * * @return */ E getExpiryPolicy(); diff --git a/hazelcast/src/main/java/com/hazelcast/map/MapEvictionPolicyComparator.java b/hazelcast/src/main/java/com/hazelcast/map/MapEvictionPolicyComparator.java index ae71ddf995356..f4b82ad96f088 100644 --- a/hazelcast/src/main/java/com/hazelcast/map/MapEvictionPolicyComparator.java +++ b/hazelcast/src/main/java/com/hazelcast/map/MapEvictionPolicyComparator.java @@ -28,6 +28,7 @@ * @see EvictionPolicyComparator * @see EntryView */ +@FunctionalInterface public interface MapEvictionPolicyComparator extends EvictionPolicyComparator> { diff --git a/hazelcast/src/main/java/com/hazelcast/spi/eviction/EvictionPolicyComparator.java b/hazelcast/src/main/java/com/hazelcast/spi/eviction/EvictionPolicyComparator.java index 38e3d376d60d5..ad1f3b42e0cda 100644 --- a/hazelcast/src/main/java/com/hazelcast/spi/eviction/EvictionPolicyComparator.java +++ b/hazelcast/src/main/java/com/hazelcast/spi/eviction/EvictionPolicyComparator.java @@ -32,6 +32,7 @@ */ @SuppressWarnings("checkstyle:interfaceistype") +@FunctionalInterface public interface EvictionPolicyComparator> extends Comparator, Serializable { diff --git a/hazelcast/src/test/java/com/hazelcast/internal/eviction/EvictionPolicyEvaluatorTest.java b/hazelcast/src/test/java/com/hazelcast/internal/eviction/EvictionPolicyEvaluatorTest.java index 00432d41e528d..61bca29b2df4b 100644 --- a/hazelcast/src/test/java/com/hazelcast/internal/eviction/EvictionPolicyEvaluatorTest.java +++ b/hazelcast/src/test/java/com/hazelcast/internal/eviction/EvictionPolicyEvaluatorTest.java @@ -132,11 +132,11 @@ public EvictionPolicyComparator getComparator() { if (i == expectedEvictedRecordValue) { // The record in the middle will be minimum access time. // So, it will be selected for eviction - record.setAccessTime(baseTime - 1000); + record.setLastAccessTime(baseTime - 1000); } else if (i == expectedExpiredRecordValue) { record.setExpirationTime(System.currentTimeMillis()); } else { - record.setAccessTime(creationTime + 1000); + record.setLastAccessTime(creationTime + 1000); } records.add(new SimpleEvictionCandidate(i, record)); } @@ -206,7 +206,7 @@ public EvictionPolicyComparator getComparator() { } else { record.setHits(i + 1); } - records.add(new SimpleEvictionCandidate(i, record)); + records.add(new SimpleEvictionCandidate<>(i, record)); } EvictionCandidate evictionCandidate = evictionPolicyEvaluator.evaluate(records);