Skip to content

Commit

Permalink
Merge pull request #977 from leosunli/trunk
Browse files Browse the repository at this point in the history
HDFS-14541. When evictableMmapped or evictable size is zero, do not throw NoSuchElementException.
  • Loading branch information
goiri authored Jun 25, 2019
2 parents 129576f + daa1e14 commit 38a560c
Showing 1 changed file with 11 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,8 @@ public void run() {
int numDemoted = demoteOldEvictableMmaped(curMs);
int numPurged = 0;
Long evictionTimeNs;
while (true) {
Object eldestKey;
try {
eldestKey = evictable.firstKey();
} catch (NoSuchElementException e) {
break;
}
while (!evictable.isEmpty()) {
Object eldestKey = evictable.firstKey();
evictionTimeNs = (Long)eldestKey;
long evictionTimeMs =
TimeUnit.MILLISECONDS.convert(evictionTimeNs, TimeUnit.NANOSECONDS);
Expand Down Expand Up @@ -493,13 +488,8 @@ private int demoteOldEvictableMmaped(long now) {
boolean needMoreSpace = false;
Long evictionTimeNs;

while (true) {
Object eldestKey;
try {
eldestKey = evictableMmapped.firstKey();
} catch (NoSuchElementException e) {
break;
}
while (!evictableMmapped.isEmpty()) {
Object eldestKey = evictableMmapped.firstKey();
evictionTimeNs = (Long)eldestKey;
long evictionTimeMs =
TimeUnit.MILLISECONDS.convert(evictionTimeNs, TimeUnit.NANOSECONDS);
Expand Down Expand Up @@ -533,23 +523,15 @@ private void trimEvictionMaps() {
long now = Time.monotonicNow();
demoteOldEvictableMmaped(now);

while (true) {
long evictableSize = evictable.size();
long evictableMmappedSize = evictableMmapped.size();
if (evictableSize + evictableMmappedSize <= maxTotalSize) {
return;
}
while (evictable.size() + evictableMmapped.size() > maxTotalSize) {
ShortCircuitReplica replica;
try {
if (evictableSize == 0) {
replica = (ShortCircuitReplica)evictableMmapped.get(evictableMmapped
.firstKey());
} else {
replica = (ShortCircuitReplica)evictable.get(evictable.firstKey());
}
} catch (NoSuchElementException e) {
break;
if (evictable.isEmpty()) {
replica = (ShortCircuitReplica) evictableMmapped
.get(evictableMmapped.firstKey());
} else {
replica = (ShortCircuitReplica) evictable.get(evictable.firstKey());
}

if (LOG.isTraceEnabled()) {
LOG.trace(this + ": trimEvictionMaps is purging " + replica +
StringUtils.getStackTrace(Thread.currentThread()));
Expand Down

0 comments on commit 38a560c

Please sign in to comment.