Merge pull request #977 from leosunli/trunk
HDFS-14541. When evictableMmapped or evictable size is zero, do not throw NoSuchElementException.
This commit is contained in:
commit
38a560c6f1
@ -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);
|
||||
@ -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);
|
||||
@ -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());
|
||||
if (evictable.isEmpty()) {
|
||||
replica = (ShortCircuitReplica) evictableMmapped
|
||||
.get(evictableMmapped.firstKey());
|
||||
} else {
|
||||
replica = (ShortCircuitReplica) evictable.get(evictable.firstKey());
|
||||
}
|
||||
} catch (NoSuchElementException e) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (LOG.isTraceEnabled()) {
|
||||
LOG.trace(this + ": trimEvictionMaps is purging " + replica +
|
||||
StringUtils.getStackTrace(Thread.currentThread()));
|
||||
|
Loading…
Reference in New Issue
Block a user