public DeepPagingCache() {
this(DEFAULT_MAX);
}
public DeepPagingCache(long maxEntriesForDeepPaging) {
_hits = Metrics.newMeter(new MetricName(ORG_APACHE_BLUR, DEEP_PAGING_CACHE, HIT), HIT, TimeUnit.SECONDS);
_misses = Metrics.newMeter(new MetricName(ORG_APACHE_BLUR, DEEP_PAGING_CACHE, MISS), MISS, TimeUnit.SECONDS);
_evictions = Metrics.newMeter(new MetricName(ORG_APACHE_BLUR, DEEP_PAGING_CACHE, EVICTION), EVICTION,
TimeUnit.SECONDS);
_lruCache = new ConcurrentLinkedHashMap.Builder<DeepPageKeyPlusPosition, DeepPageContainer>()
.maximumWeightedCapacity(maxEntriesForDeepPaging)
.listener(new EvictionListener<DeepPageKeyPlusPosition, DeepPageContainer>() {
@Override
public void onEviction(DeepPageKeyPlusPosition key, DeepPageContainer value) {
_positionCache.remove(key);
_evictions.mark();
}
}).build();
Metrics.newGauge(new MetricName(ORG_APACHE_BLUR, DEEP_PAGING_CACHE, SIZE), new Gauge<Long>() {
@Override
public Long value() {
return _lruCache.weightedSize();
}
});