Browse Source

HDDS-1861. Fix TableCacheImpl cleanup logic. (#1165)

Bharat Viswanadham 5 years ago
parent
commit
3426777140

+ 4 - 3
hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/db/cache/TableCacheImpl.java

@@ -21,8 +21,9 @@ package org.apache.hadoop.utils.db.cache;
 
 import java.util.Iterator;
 import java.util.Map;
-import java.util.TreeSet;
+import java.util.NavigableSet;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
@@ -47,7 +48,7 @@ public class TableCacheImpl<CACHEKEY extends CacheKey,
     CACHEVALUE extends CacheValue> implements TableCache<CACHEKEY, CACHEVALUE> {
 
   private final ConcurrentHashMap<CACHEKEY, CACHEVALUE> cache;
-  private final TreeSet<EpochEntry<CACHEKEY>> epochEntries;
+  private final NavigableSet<EpochEntry<CACHEKEY>> epochEntries;
   private ExecutorService executorService;
   private CacheCleanupPolicy cleanupPolicy;
 
@@ -55,7 +56,7 @@ public class TableCacheImpl<CACHEKEY extends CacheKey,
 
   public TableCacheImpl(CacheCleanupPolicy cleanupPolicy) {
     cache = new ConcurrentHashMap<>();
-    epochEntries = new TreeSet<>();
+    epochEntries = new ConcurrentSkipListSet<>();
     // Created a singleThreadExecutor, so one cleanup will be running at a
     // time.
     ThreadFactory build = new ThreadFactoryBuilder().setDaemon(true)