adds new metrics for cache evictions (#4549)

diff --git a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java
index 79ea0bd..b62fc84 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java
@@ -141,6 +141,11 @@
         public long requestCount() {
           return 0L;
         }
+
+        @Override
+        public long evictionCount() {
+          return 0L;
+        }
       };
     }
 
diff --git a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
index 2167fdc..a373823 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
@@ -633,6 +633,11 @@
       return accessCount.get();
     }
 
+    @Override
+    public long evictionCount() {
+      return getEvictedCount();
+    }
+
     public long getMissCount() {
       return missCount.get();
     }
diff --git a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
index 46a0768..ca3a613 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
@@ -113,6 +113,11 @@
       public long requestCount() {
         return stats.requestCount();
       }
+
+      @Override
+      public long evictionCount() {
+        return stats.evictionCount();
+      }
     };
   }
 
diff --git a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
index abfdfc9..56ef2cd 100644
--- a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
@@ -655,11 +655,15 @@
   String METRICS_BLOCKCACHE_PREFIX = "accumulo.blockcache.";
   String METRICS_BLOCKCACHE_INDEX_HITCOUNT = METRICS_BLOCKCACHE_PREFIX + "index.hitcount";
   String METRICS_BLOCKCACHE_INDEX_REQUESTCOUNT = METRICS_BLOCKCACHE_PREFIX + "index.requestcount";
+  String METRICS_BLOCKCACHE_INDEX_EVICTIONCOUNT = METRICS_BLOCKCACHE_PREFIX + "index.evictioncount";
   String METRICS_BLOCKCACHE_DATA_HITCOUNT = METRICS_BLOCKCACHE_PREFIX + "data.hitcount";
   String METRICS_BLOCKCACHE_DATA_REQUESTCOUNT = METRICS_BLOCKCACHE_PREFIX + "data.requestcount";
+  String METRICS_BLOCKCACHE_DATA_EVICTIONCOUNT = METRICS_BLOCKCACHE_PREFIX + "data.evictioncount";
   String METRICS_BLOCKCACHE_SUMMARY_HITCOUNT = METRICS_BLOCKCACHE_PREFIX + "summary.hitcount";
   String METRICS_BLOCKCACHE_SUMMARY_REQUESTCOUNT =
       METRICS_BLOCKCACHE_PREFIX + "summary.requestcount";
+  String METRICS_BLOCKCACHE_SUMMARY_EVICTIONCOUNT =
+      METRICS_BLOCKCACHE_PREFIX + "summary.evictioncount";
 
   /**
    * Build Micrometer Meter objects and register them with the registry
diff --git a/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java b/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java
index d900149..9ebe3fc 100644
--- a/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java
+++ b/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java
@@ -111,5 +111,12 @@
      * @return the number of lookups
      */
     long requestCount();
+
+    /**
+     * @return The number of entries evicted from the cache.
+     *
+     * @since 3.1.0
+     */
+    long evictionCount();
   }
 }
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
index ca3fc6c..6444e74 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
@@ -42,20 +42,28 @@
   public void registerMetrics(MeterRegistry registry) {
     ToDoubleFunction<BlockCache> getHitCount = cache -> cache.getStats().hitCount();
     ToDoubleFunction<BlockCache> getRequestCount = cache -> cache.getStats().requestCount();
+    ToDoubleFunction<BlockCache> getEvictionCount = cache -> cache.getStats().evictionCount();
 
     FunctionCounter.builder(METRICS_BLOCKCACHE_INDEX_HITCOUNT, indexCache, getHitCount)
         .description("Index block cache hit count").register(registry);
     FunctionCounter.builder(METRICS_BLOCKCACHE_INDEX_REQUESTCOUNT, indexCache, getRequestCount)
         .description("Index block cache request count").register(registry);
+    FunctionCounter.builder(METRICS_BLOCKCACHE_INDEX_EVICTIONCOUNT, indexCache, getEvictionCount)
+        .description("Index block cache eviction count").register(registry);
 
     FunctionCounter.builder(METRICS_BLOCKCACHE_DATA_HITCOUNT, dataCache, getHitCount)
         .description("Data block cache hit count").register(registry);
     FunctionCounter.builder(METRICS_BLOCKCACHE_DATA_REQUESTCOUNT, dataCache, getRequestCount)
         .description("Data block cache request count").register(registry);
+    FunctionCounter.builder(METRICS_BLOCKCACHE_DATA_EVICTIONCOUNT, dataCache, getEvictionCount)
+        .description("Data block cache eviction count").register(registry);
 
     FunctionCounter.builder(METRICS_BLOCKCACHE_SUMMARY_HITCOUNT, summaryCache, getHitCount)
         .description("Summary block cache hit count").register(registry);
     FunctionCounter.builder(METRICS_BLOCKCACHE_SUMMARY_REQUESTCOUNT, summaryCache, getRequestCount)
         .description("Summary block cache request count").register(registry);
+    FunctionCounter
+        .builder(METRICS_BLOCKCACHE_SUMMARY_EVICTIONCOUNT, summaryCache, getEvictionCount)
+        .description("Summary block cache eviction count").register(registry);
   }
 }