SOLR-10225: fix BlockCache evictions metric to not count explicit removal

This commit is contained in:
yonik 2017-03-03 12:39:33 -05:00
parent fbc844d334
commit 4990eed1b3
2 changed files with 9 additions and 3 deletions

View File

@ -196,6 +196,9 @@ Bug Fixes
* SOLR-10196: ElectionContext#runLeaderProcess can hit NPE on core close. (Mark Miller)
* SOLR-10225: Fix HDFS BlockCache evictions metric to not count explicit removal
due to a directory close. (yonik)
Optimizations
----------------------

View File

@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.RemovalCause;
import com.github.benmanes.caffeine.cache.RemovalListener;
/**
@ -75,7 +76,7 @@ public class BlockCache {
lockCounters[i] = new AtomicInteger();
}
RemovalListener<BlockCacheKey,BlockCacheLocation> listener = (blockCacheKey, blockCacheLocation, removalCause) -> releaseLocation(blockCacheKey, blockCacheLocation);
RemovalListener<BlockCacheKey,BlockCacheLocation> listener = (blockCacheKey, blockCacheLocation, removalCause) -> releaseLocation(blockCacheKey, blockCacheLocation, removalCause);
cache = Caffeine.newBuilder()
.removalListener(listener)
@ -88,7 +89,7 @@ public class BlockCache {
cache.invalidate(key);
}
private void releaseLocation(BlockCacheKey blockCacheKey, BlockCacheLocation location) {
private void releaseLocation(BlockCacheKey blockCacheKey, BlockCacheLocation location, RemovalCause removalCause) {
if (location == null) {
return;
}
@ -103,7 +104,9 @@ public class BlockCache {
for (OnRelease onRelease : onReleases) {
onRelease.release(blockCacheKey);
}
metrics.blockCacheEviction.incrementAndGet();
if (removalCause.wasEvicted()) {
metrics.blockCacheEviction.incrementAndGet();
}
metrics.blockCacheSize.decrementAndGet();
}