HDFS-15161. When evictableMmapped or evictable size is zero, do not throw NoSuchElementException in ShortCircuitCache#close(). Contributed by Lisheng Sun
This commit is contained in:
parent
8d6ff87c18
commit
f09710bbb8
|
@ -26,7 +26,6 @@ import java.nio.MappedByteBuffer;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -865,23 +864,13 @@ public class ShortCircuitCache implements Closeable {
|
|||
// Close and join cacheCleaner thread.
|
||||
IOUtilsClient.cleanupWithLogger(LOG, cacheCleaner);
|
||||
// Purge all replicas.
|
||||
while (true) {
|
||||
Object eldestKey;
|
||||
try {
|
||||
eldestKey = evictable.firstKey();
|
||||
} catch (NoSuchElementException e) {
|
||||
break;
|
||||
}
|
||||
purge((ShortCircuitReplica)evictable.get(eldestKey));
|
||||
while (!evictable.isEmpty()) {
|
||||
Object eldestKey = evictable.firstKey();
|
||||
purge((ShortCircuitReplica) evictable.get(eldestKey));
|
||||
}
|
||||
while (true) {
|
||||
Object eldestKey;
|
||||
try {
|
||||
eldestKey = evictableMmapped.firstKey();
|
||||
} catch (NoSuchElementException e) {
|
||||
break;
|
||||
}
|
||||
purge((ShortCircuitReplica)evictableMmapped.get(eldestKey));
|
||||
while (!evictableMmapped.isEmpty()) {
|
||||
Object eldestKey = evictableMmapped.firstKey();
|
||||
purge((ShortCircuitReplica) evictableMmapped.get(eldestKey));
|
||||
}
|
||||
} finally {
|
||||
lock.unlock();
|
||||
|
|
Loading…
Reference in New Issue