diff --git a/server/src/main/java/org/opensearch/indices/IndicesRequestCache.java b/server/src/main/java/org/opensearch/indices/IndicesRequestCache.java index 481607263d289..f02e8b899ed76 100644 --- a/server/src/main/java/org/opensearch/indices/IndicesRequestCache.java +++ b/server/src/main/java/org/opensearch/indices/IndicesRequestCache.java @@ -417,11 +417,15 @@ long count() { return tieredCacheService.count(); } + long count(TierType tierType) { + return tieredCacheService.count(tierType); + } + int numRegisteredCloseListeners() { // for testing return registeredClosedListeners.size(); } - /*public void closeDiskTier() { - tieredCacheHandler.closeDiskTier(); - }*/ + public void closeDiskTier() { + tieredCacheService.closeDiskTier(); + } } diff --git a/server/src/main/java/org/opensearch/indices/TieredCacheService.java b/server/src/main/java/org/opensearch/indices/TieredCacheService.java index 59e5e0e00b6c1..8b77447bb951b 100644 --- a/server/src/main/java/org/opensearch/indices/TieredCacheService.java +++ b/server/src/main/java/org/opensearch/indices/TieredCacheService.java @@ -28,7 +28,11 @@ public interface TieredCacheService { long count(); + long count(TierType tierType); + OnHeapCachingTier getOnHeapCachingTier(); Optional> getDiskCachingTier(); + + void closeDiskTier(); } diff --git a/server/src/main/java/org/opensearch/indices/TieredCacheSpilloverStrategyService.java b/server/src/main/java/org/opensearch/indices/TieredCacheSpilloverStrategyService.java index 7799170a1ede9..6586dcbba78fc 100644 --- a/server/src/main/java/org/opensearch/indices/TieredCacheSpilloverStrategyService.java +++ b/server/src/main/java/org/opensearch/indices/TieredCacheSpilloverStrategyService.java @@ -124,6 +124,16 @@ public long count() { return totalCount; } + @Override + public long count(TierType tierType) { + for (CachingTier cachingTier : cachingTierList) { + if (cachingTier.getTierType() == tierType) { + return cachingTier.count(); + } + } + return -1L; + } + /** * Called whenever an item is evicted from any cache tier. If the item was evicted from onHeap cache, it is moved * to disk tier cache. In case it was evicted from disk tier cache, it will discarded. @@ -165,6 +175,15 @@ private void setRemovalListeners() { } } + /** + * Close the ehcache disk tier, if there is one. + */ + public void closeDiskTier() { + if (diskCachingTier.isPresent()) { + diskCachingTier.get().close(); + } + } + private Function> getValueFromTierCache(boolean trackStats) { return key -> { for (CachingTier cachingTier : cachingTierList) { diff --git a/server/src/test/java/org/opensearch/indices/IndicesRequestCacheTests.java b/server/src/test/java/org/opensearch/indices/IndicesRequestCacheTests.java index 495e680bd2016..4ef19c3118e08 100644 --- a/server/src/test/java/org/opensearch/indices/IndicesRequestCacheTests.java +++ b/server/src/test/java/org/opensearch/indices/IndicesRequestCacheTests.java @@ -312,8 +312,8 @@ public void testEhcacheConcurrency() throws Exception { assertNotNull(value); } - //System.out.println("heap size " + cache.count(TierType.ON_HEAP)); - //System.out.println("disk size " + cache.count(TierType.DISK)); + System.out.println("heap size " + cache.count(TierType.ON_HEAP)); + System.out.println("disk size " + cache.count(TierType.DISK)); System.out.println("disk misses " + requestCacheStats.stats(TierType.DISK).getMissCount()); System.out.println("disk hits " + requestCacheStats.stats(TierType.DISK).getHitCount()); /*System.out.println("disk num gets " + cache.tieredCacheHandler.getDiskCachingTier().numGets); diff --git a/server/src/test/java/org/opensearch/indices/TieredCacheSpilloverStrategyServiceTests.java b/server/src/test/java/org/opensearch/indices/TieredCacheSpilloverStrategyServiceTests.java index 4c4c7f195ba31..447d124c57f18 100644 --- a/server/src/test/java/org/opensearch/indices/TieredCacheSpilloverStrategyServiceTests.java +++ b/server/src/test/java/org/opensearch/indices/TieredCacheSpilloverStrategyServiceTests.java @@ -454,5 +454,15 @@ public TierType getTierType() { public void onRemoval(RemovalNotification notification) { this.removalListener.onRemoval(notification); } + + @Override + public double getTimeMillisEWMA() { + return 0.0; + } + + @Override + public void close() { + + } } }