diff --git a/hydra-data/src/main/java/com/addthis/hydra/data/query/engine/EngineRemovalListener.java b/hydra-data/src/main/java/com/addthis/hydra/data/query/engine/EngineRemovalListener.java index af80cf1c2..6701f950e 100644 --- a/hydra-data/src/main/java/com/addthis/hydra/data/query/engine/EngineRemovalListener.java +++ b/hydra-data/src/main/java/com/addthis/hydra/data/query/engine/EngineRemovalListener.java @@ -16,6 +16,7 @@ import java.util.concurrent.TimeUnit; +import com.google.common.cache.RemovalCause; import com.google.common.cache.RemovalListener; import com.google.common.cache.RemovalNotification; @@ -37,6 +38,18 @@ class EngineRemovalListener implements RemovalListener { static final Meter directoriesEvicted = Metrics.newMeter(QueryEngineCache.class, "directoriesEvicted", "directoriesEvicted", TimeUnit.MINUTES); + static final Meter replacedEvicted = Metrics.newMeter(QueryEngineCache.class, "ReplacedEvicted", + "ReplacedEvicted", TimeUnit.MINUTES); + + static final Meter collectedEvicted = Metrics.newMeter(QueryEngineCache.class, "CollectedEvicted", + "CollectedEvicted", TimeUnit.MINUTES); + + static final Meter expiredEvicted = Metrics.newMeter(QueryEngineCache.class, "ExpiredEvicted", + "ExpiredEvicted", TimeUnit.MINUTES); + + static final Meter sizeEvicted = Metrics.newMeter(QueryEngineCache.class, "SizeEvicted", + "SizeEvicted", TimeUnit.MINUTES); + private final QueryEngineCache engineCache; public EngineRemovalListener(QueryEngineCache engineCache) { @@ -57,6 +70,13 @@ public void onRemoval(RemovalNotification notification) { } if (currentEngine == null) { directoriesEvicted.mark(); + if(notification.getCause() == RemovalCause.REPLACED) { + replacedEvicted.mark(); + } + collectedEvicted.mark(); + expiredEvicted.mark(); + sizeEvicted.mark(); + } } } diff --git a/hydra-store/src/main/java/com/addthis/hydra/store/common/PageCacheMetrics.java b/hydra-store/src/main/java/com/addthis/hydra/store/common/PageCacheMetrics.java index ba62c3c3f..bd3b74747 100644 --- a/hydra-store/src/main/java/com/addthis/hydra/store/common/PageCacheMetrics.java +++ b/hydra-store/src/main/java/com/addthis/hydra/store/common/PageCacheMetrics.java @@ -13,11 +13,15 @@ */ package com.addthis.hydra.store.common; +import java.util.concurrent.TimeUnit; + import com.addthis.codec.codables.BytesCodable; import com.addthis.hydra.store.nonconcurrent.NonConcurrentPageCache; + import com.yammer.metrics.Metrics; import com.yammer.metrics.core.Gauge; import com.yammer.metrics.core.Histogram; +import com.yammer.metrics.core.Meter; public class PageCacheMetrics { @@ -49,6 +53,8 @@ public class PageCacheMetrics { // This metrics counts compressed bytes public final Histogram numberKeysPerPage; + public static Meter pagesDeletedMeter; + public PageCacheMetrics(AbstractPageCache cache) { parent = cache; memEstimateGauge = Metrics.newGauge(cache.getClass(), @@ -111,6 +117,8 @@ public Long value() { Metrics.newHistogram(cache.getClass(), "numberKeysPerPage", parent.scope) : null; + pagesDeletedMeter = Metrics.newMeter(cache.getClass(), "pagesDeleted", "pagesDeleted", TimeUnit.MINUTES); + pagesDeletedMeter.mark(); } }