diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java index 7ccede18579..63507522450 100644 --- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java +++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java @@ -16,9 +16,8 @@ */ package org.apache.jackrabbit.oak.plugins.blob; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheLIRS; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.LoadingCache; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.apache.jackrabbit.oak.commons.StringUtils; @@ -48,7 +47,7 @@ public abstract class CachingBlobStore extends AbstractBlobStore { return (int) weight; }; - private final AbstractCacheStats cacheStats; + private final CacheStats cacheStats; public static final String MEM_CACHE_NAME = "BlobStore-MemCache"; @@ -62,7 +61,7 @@ public CachingBlobStore(long cacheSize) { weigher(weigher::weigh). build().asOakCache(); - cacheStats = new CacheStatsAdapter(cache, MEM_CACHE_NAME, weigher, cacheSize); + cacheStats = new CacheStats(cache, MEM_CACHE_NAME, weigher, cacheSize); } public CachingBlobStore() { @@ -79,7 +78,7 @@ public long getBlobCacheSize() { return blobCacheSize; } - public AbstractCacheStats getCacheStats() { + public CacheStats getCacheStats() { return cacheStats; } } diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java index 94fa0bfed61..e1a4c9f0f21 100644 --- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java +++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java @@ -39,7 +39,7 @@ import org.apache.jackrabbit.oak.cache.CacheLIRS; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.cache.api.CacheLoader; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.apache.jackrabbit.oak.commons.StringUtils; import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser; @@ -423,7 +423,7 @@ private int build() { } } -class FileCacheStats extends CacheStatsAdapter implements DataStoreCacheStatsMBean { +class FileCacheStats extends CacheStats implements DataStoreCacheStatsMBean { private static final long BLOCK_SIZE = 4 * 1024; private final Weigher weigher; private final Cache cache; diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java index 6a44a2c855f..e757dec37d9 100644 --- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java +++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java @@ -52,10 +52,8 @@ import org.apache.jackrabbit.oak.api.blob.BlobDownloadOptions; import org.apache.jackrabbit.oak.api.blob.BlobUpload; import org.apache.jackrabbit.oak.api.blob.BlobUploadOptions; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.api.Cache; -import org.apache.jackrabbit.oak.cache.api.CacheBuilder; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.apache.jackrabbit.oak.commons.StringUtils; import org.apache.jackrabbit.oak.commons.collections.IteratorUtils; @@ -134,7 +132,7 @@ public int weigh(@NotNull String key, @NotNull byte[] value) { } }; - private final AbstractCacheStats cacheStats; + private final CacheStats cacheStats; public static final String MEM_CACHE_NAME = "BlobStore-MemCache"; @@ -159,7 +157,7 @@ public DataStoreBlobStore(DataStore delegate, boolean encodeLengthInId, int cach .maximumWeight(cacheSize) .weigher(weigher::weigh) .build().asOakCache(); - this.cacheStats = new CacheStatsAdapter(cache, MEM_CACHE_NAME, weigher, cacheSize); + this.cacheStats = new CacheStats(cache, MEM_CACHE_NAME, weigher, cacheSize); } //~----------------------------------< DataStore > @@ -828,7 +826,7 @@ public DataStore getDataStore() { return delegate; } - public AbstractCacheStats getCacheStats() { + public CacheStats getCacheStats() { return cacheStats; } diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/AbstractCacheStats.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/AbstractCacheStats.java index ba2b8c381cf..e2e90fd0732 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/AbstractCacheStats.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/AbstractCacheStats.java @@ -25,8 +25,8 @@ import java.util.StringJoiner; import java.util.concurrent.TimeUnit; -import org.apache.jackrabbit.guava.common.cache.CacheStats; import org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean; import org.jetbrains.annotations.NotNull; @@ -38,8 +38,8 @@ public abstract class AbstractCacheStats extends AnnotatedStandardMBean implemen @NotNull private final String name; - private CacheStats lastSnapshot = - new CacheStats(0, 0, 0, 0, 0, 0); + private CacheStatsSnapshot lastSnapshot = + new CacheStatsSnapshot(0, 0, 0, 0, 0, 0); /** * Create a new {@code CacheStatsMBean} for a cache with the given {@code name}. @@ -51,19 +51,21 @@ protected AbstractCacheStats(@NotNull String name) { } /** - * Call back invoked to retrieve the most recent {@code CacheStats} instance of the + * Call back invoked to retrieve the most recent {@link CacheStatsSnapshot} of the * underlying cache. */ - protected abstract CacheStats getCurrentStats(); + protected abstract CacheStatsSnapshot getCurrentStats(); - private CacheStats stats() { - return getCurrentStats().minus(lastSnapshot); + private CacheStatsSnapshot stats() { + CacheStatsSnapshot baseline; + synchronized (this) { + baseline = lastSnapshot; + } + return getCurrentStats().minus(baseline); } @Override public synchronized void resetStats() { - // Cache stats cannot be rest at Guava level. Instead we - // take a snapshot and then subtract it from future stats calls lastSnapshot = getCurrentStats(); } diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/CacheStats.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/CacheStats.java index 3860b91dfd8..d621b9c35b9 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/CacheStats.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/CacheStats.java @@ -1,68 +1,67 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package org.apache.jackrabbit.oak.cache; import java.util.Map; -import java.util.Objects; - -import org.apache.jackrabbit.guava.common.cache.Cache; -import org.apache.jackrabbit.guava.common.cache.Weigher; +import org.apache.jackrabbit.oak.cache.api.Cache; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; +import org.apache.jackrabbit.oak.cache.api.Weigher; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * Cache statistics. + * Exposes a {@link Cache}'s statistics via the {@link org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean} + * interface. */ public class CacheStats extends AbstractCacheStats { + private final Cache cache; private final Weigher weigher; private final long maxWeight; /** - * Construct the cache stats object. - * - * @param cache the cache - * @param name the name of the cache - * @param weigher the weigher used to estimate the current weight - * @param maxWeight the maximum weight + * Creates an adapter for the given cache. + * + * @param cache the cache whose statistics to expose (must not be null) + * @param name the JMX bean name (must not be null) + * @param weigher optional weigher used to estimate current cache weight; {@code null} if unknown + * @param maxWeight configured maximum weight for the cache; {@code -1} if unbounded */ @SuppressWarnings("unchecked") - public CacheStats( - @NotNull Cache cache, + public CacheStats( + @NotNull Cache cache, @NotNull String name, - @Nullable Weigher weigher, + @Nullable Weigher weigher, long maxWeight) { super(name); - this.cache = (Cache) Objects.requireNonNull(cache); + this.cache = (Cache) cache; this.weigher = (Weigher) weigher; this.maxWeight = maxWeight; } @Override - protected org.apache.jackrabbit.guava.common.cache.CacheStats getCurrentStats() { + protected CacheStatsSnapshot getCurrentStats() { return cache.stats(); } @Override public long getElementCount() { - return cache.size(); + return cache.asMap().size(); } @Override @@ -70,13 +69,11 @@ public long estimateCurrentWeight() { if (weigher == null) { return -1; } - long size = 0; - for (Map.Entry e : cache.asMap().entrySet()) { - Object k = e.getKey(); - Object v = e.getValue(); - size += weigher.weigh(k, v); + long total = 0; + for (Map.Entry e : cache.asMap().entrySet()) { + total += weigher.weigh(e.getKey(), e.getValue()); } - return size; + return total; } @Override diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/EmpiricalWeigher.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/EmpiricalWeigher.java index fea96ae9bbf..7e7f5dbd03e 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/EmpiricalWeigher.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/EmpiricalWeigher.java @@ -27,8 +27,7 @@ * Determines the weight of object based on the memory taken by them. The memory estimates * are based on empirical data and not exact */ -public class EmpiricalWeigher extends GuavaCompatibleEmpiricalWeigher - implements Weigher { +public class EmpiricalWeigher implements Weigher { static final Logger LOG = LoggerFactory.getLogger(EmpiricalWeigher.class); @@ -45,15 +44,3 @@ public int weigh(@NotNull CacheValue key, @NotNull CacheValue value) { } } - -/** - * Compatibility base class that keeps {@link EmpiricalWeigher} assignable to the - * legacy Guava-shim {@link org.apache.jackrabbit.guava.common.cache.Weigher} type while the public API migrates to - * {@link Weigher}. - * - *

TODO OAK-12162: remove this compatibility base in - * OAK-12162 once downstream callers no longer require {@link org.apache.jackrabbit.guava.common.cache.Weigher} - * assignability.

- */ -abstract class GuavaCompatibleEmpiricalWeigher implements org.apache.jackrabbit.guava.common.cache.Weigher { -} diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsAdapter.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsAdapter.java deleted file mode 100644 index e1bef782532..00000000000 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsAdapter.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jackrabbit.oak.cache.api; - -import java.util.Map; - -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * Exposes an {@link Cache}'s statistics via the {@link org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean} - * interface by bridging {@link CacheStatsSnapshot} to the Guava shim {@link org.apache.jackrabbit.guava.common.cache.CacheStats} expected - * by {@link AbstractCacheStats}. - * - *

The Guava return type from {@link #getCurrentStats()} is kept until TASK-16 updates - * the base class to use {@link CacheStatsSnapshot} directly.

- * - *

TODO OAK-TASK16: per {@code TASKS.md}, remove this temporary adapter in - * TASK-16 once {@link AbstractCacheStats} consumes {@link CacheStatsSnapshot} - * directly.

- */ -public class CacheStatsAdapter extends AbstractCacheStats { - - private final Cache cache; - private final Weigher weigher; - private final long maxWeight; - - /** - * Creates an adapter for the given cache. - * - * @param cache the cache whose statistics to expose (must not be null) - * @param name the JMX bean name (must not be null) - * @param weigher optional weigher used to estimate current cache weight; {@code null} if unknown - * @param maxWeight configured maximum weight for the cache; {@code -1} if unbounded - */ - @SuppressWarnings("unchecked") - public CacheStatsAdapter( - @NotNull Cache cache, - @NotNull String name, - @Nullable Weigher weigher, - long maxWeight) { - super(name); - this.cache = (Cache) cache; - this.weigher = (Weigher) weigher; - this.maxWeight = maxWeight; - } - - @Override - protected org.apache.jackrabbit.guava.common.cache.CacheStats getCurrentStats() { - CacheStatsSnapshot s = cache.stats(); - return new org.apache.jackrabbit.guava.common.cache.CacheStats( - s.hitCount(), s.missCount(), - s.loadSuccessCount(), s.loadFailureCount(), - s.totalLoadTime(), s.evictionCount()); - } - - @Override - public long getElementCount() { - return cache.asMap().size(); - } - - @Override - public long estimateCurrentWeight() { - if (weigher == null) { - return -1; - } - long total = 0; - for (Map.Entry e : cache.asMap().entrySet()) { - total += weigher.weigh(e.getKey(), e.getValue()); - } - return total; - } - - @Override - public long getMaxTotalWeight() { - return maxWeight; - } -} diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsSnapshot.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsSnapshot.java index ec6f8e0e0ab..c2f4a14e1f4 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsSnapshot.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/CacheStatsSnapshot.java @@ -71,6 +71,47 @@ public double missRate() { return requests == 0 ? 0.0 : (double) missCount / requests; } + /** + * Returns the total number of load attempts (successes + failures). + * + * @return load count + */ + public long loadCount() { + return loadSuccessCount + loadFailureCount; + } + + /** + * Returns the number of load attempts that threw an exception. + * Alias for {@link #loadFailureCount()}, matching the JMX interface naming. + * + * @return load exception count + */ + public long loadExceptionCount() { + return loadFailureCount; + } + + /** + * Returns the ratio of load attempts that threw an exception, or {@code 0.0} + * if no loads have been attempted. + * + * @return load exception rate between 0.0 and 1.0 + */ + public double loadExceptionRate() { + long loads = loadCount(); + return loads == 0 ? 0.0 : (double) loadFailureCount / loads; + } + + /** + * Returns the average time spent loading a new value, in nanoseconds, or + * {@code 0.0} if no loads have been attempted. + * + * @return average load penalty in nanoseconds + */ + public double averageLoadPenalty() { + long loads = loadCount(); + return loads == 0 ? 0.0 : (double) totalLoadTime / loads; + } + /** * Returns the difference between this snapshot and an earlier {@code other} * snapshot, useful for computing per-interval deltas. @@ -89,4 +130,23 @@ public CacheStatsSnapshot minus(@NotNull CacheStatsSnapshot other) { Math.max(0, evictionCount - other.evictionCount) ); } -} + + /** + * Returns the sum of this snapshot and an earlier {@code other} + * snapshot, useful for computing total deltas. + * + * @param other the earlier snapshot to add (must not be null) + * @return a new snapshot representing the total + */ + @NotNull + public CacheStatsSnapshot plus(@NotNull CacheStatsSnapshot other) { + return new CacheStatsSnapshot( + Math.addExact(hitCount, other.hitCount), + Math.addExact(missCount, other.missCount), + Math.addExact(loadSuccessCount, other.loadSuccessCount), + Math.addExact(loadFailureCount, other.loadFailureCount), + Math.addExact(totalLoadTime, other.totalLoadTime), + Math.addExact(evictionCount, other.evictionCount) + ); + } +} \ No newline at end of file diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/package-info.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/package-info.java index 4bd384ffb3e..ce415459ccb 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/package-info.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/api/package-info.java @@ -19,7 +19,7 @@ * For Oak internal use only. Do not use outside Oak components. */ @Internal(since = "1.0.0") -@Version("1.0.0") +@Version("2.0.0") package org.apache.jackrabbit.oak.cache.api; import org.apache.jackrabbit.oak.commons.annotations.Internal; diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/impl/caffeine/CaffeineCacheAdapter.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/impl/caffeine/CaffeineCacheAdapter.java index 92510a885e0..cc11a8cd3a3 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/impl/caffeine/CaffeineCacheAdapter.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/impl/caffeine/CaffeineCacheAdapter.java @@ -20,7 +20,6 @@ import java.util.concurrent.ConcurrentMap; import java.util.function.Function; -import com.github.benmanes.caffeine.cache.Policy; import com.github.benmanes.caffeine.cache.RemovalCause; import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.apache.jackrabbit.oak.cache.api.Cache; diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/package-info.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/package-info.java index 61515af957e..a9a2f2e4336 100644 --- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/package-info.java +++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/cache/package-info.java @@ -19,7 +19,7 @@ * For Oak internal use only. Do not use outside Oak components. */ @Internal(since = "1.1.1") -@Version("2.1") +@Version("3.0") package org.apache.jackrabbit.oak.cache; import org.apache.jackrabbit.oak.commons.annotations.Internal; diff --git a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/AbstractCacheStatsTest.java b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/AbstractCacheStatsTest.java index 4d3fb779d4e..7afb7d601c5 100644 --- a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/AbstractCacheStatsTest.java +++ b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/AbstractCacheStatsTest.java @@ -38,7 +38,7 @@ public class AbstractCacheStatsTest { @Before public void setUp() { cache = new CacheLIRS<>(null, MAX_WEIGHT, 1, 1, 0, null, null, null); - stats = new CacheStats(cache, CACHE_NAME, null, MAX_WEIGHT); + stats = new CacheStats(cache.asOakCache(), CACHE_NAME, null, MAX_WEIGHT); } @Test @@ -95,7 +95,7 @@ public void evictionCountIncreasesAfterCapacityEviction() { CacheLIRS smallCache = CacheLIRS.newBuilder() .maximumSize(5) .build(); - CacheStats smallStats = new CacheStats(smallCache, "small", null, 5); + CacheStats smallStats = new CacheStats(smallCache.asOakCache(), "small", null, 5); for (int i = 0; i < 30; i++) { smallCache.put("k" + i, "v" + i); } diff --git a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/CacheStatsTest.java b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/CacheStatsTest.java deleted file mode 100644 index 2f0e3e48941..00000000000 --- a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/CacheStatsTest.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.jackrabbit.oak.cache; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; - -import org.apache.jackrabbit.guava.common.cache.Cache; -import org.apache.jackrabbit.guava.common.cache.CacheBuilder; -import org.apache.jackrabbit.guava.common.cache.Weigher; -import org.jetbrains.annotations.NotNull; -import org.junit.Before; -import org.junit.Test; - -public class CacheStatsTest { - private static final String NAME = "cache stats"; - private static final int KEYS = 100; - - private final Weigher weigher = new Weigher() { - @Override - public int weigh(@NotNull Integer key, @NotNull Integer value) { - return 1; - } - }; - - private final Cache cache = CacheBuilder.newBuilder() - .recordStats() - .maximumWeight(Long.MAX_VALUE) - .weigher(weigher) - .build(); - - private final CacheStats cacheStats = - new CacheStats(cache, NAME, weigher, Long.MAX_VALUE); - - private int misses; - private int fails; - private long loadTime; - - @Before - public void setup() { - for (int k = 0; k < KEYS; k++) { - cache.put(k, k); - } - - for (int k = 0; k < 100; k++) { - final int key = 4 * k; - try { - cache.get(key, new Callable() { - @Override - public Integer call() throws Exception { - long t0 = System.nanoTime(); - try { - if (key % 10 == 0) { - fails++; - throw new Exception("simulated load failure"); - } else { - misses++; - return key; - } - } finally { - loadTime += System.nanoTime() - t0; - } - - } - }); - } catch (ExecutionException ignore) { } - } - } - - @Test - public void name() throws Exception { - assertEquals(NAME, cacheStats.getName()); - } - - @Test - public void getRequestCount() { - assertEquals(KEYS, cacheStats.getRequestCount()); - } - - @Test - public void getHitCount() { - assertEquals(KEYS - misses - fails, cacheStats.getHitCount()); - } - - @Test - public void getHitRate() { - assertEquals((KEYS - (double) misses - fails)/KEYS, cacheStats.getHitRate(), Double.MIN_VALUE); - } - - @Test - public void getMissCount() { - assertEquals(misses + fails, cacheStats.getMissCount()); - } - - @Test - public void getMissRate() { - assertEquals(((double)misses + fails)/KEYS, cacheStats.getMissRate(), Double.MIN_VALUE); - } - - @Test - public void getLoadCount() { - assertEquals(misses + fails, cacheStats.getLoadCount()); - } - - @Test - public void getLoadSuccessCount() { - assertEquals(misses, cacheStats.getLoadSuccessCount()); - } - - @Test - public void getLoadExceptionCount() { - assertEquals(fails, cacheStats.getLoadExceptionCount()); - } - - @Test - public void getLoadExceptionRate() { - assertEquals((double)fails/(misses + fails), cacheStats.getLoadExceptionRate(), Double.MIN_VALUE); - } - - @Test - public void getTotalLoadTime() { - assertTrue(loadTime <= cacheStats.getTotalLoadTime()); - } - - @Test - public void getAverageLoadPenalty() { - assertTrue(((double)loadTime/(misses + fails)) <= cacheStats.getAverageLoadPenalty()); - } - - @Test - public void getEvictionCount() { - assertEquals(0, cacheStats.getEvictionCount()); - } - - @Test - public void getElementCount() { - assertEquals(KEYS + misses, cacheStats.getElementCount()); - } - - @Test - public void getMaxTotalWeight() { - assertEquals(Long.MAX_VALUE, cacheStats.getMaxTotalWeight()); - } - - @Test - public void estimateCurrentWeight() { - assertEquals(KEYS + misses, cacheStats.estimateCurrentWeight()); - } - - @Test - public void resetStats() { - cacheStats.resetStats(); - assertEquals(0, cacheStats.getRequestCount()); - assertEquals(0, cacheStats.getHitCount()); - assertEquals(1.0, cacheStats.getHitRate(), Double.MIN_VALUE); - assertEquals(0, cacheStats.getMissCount()); - assertEquals(0.0, cacheStats.getMissRate(), Double.MIN_VALUE); - assertEquals(0, cacheStats.getLoadCount()); - assertEquals(0, cacheStats.getLoadSuccessCount()); - assertEquals(0, cacheStats.getLoadExceptionCount()); - assertEquals(0, cacheStats.getLoadExceptionRate(), Double.MIN_VALUE); - assertEquals(0, cacheStats.getTotalLoadTime()); - assertEquals(0, cacheStats.getAverageLoadPenalty(), Double.MIN_VALUE); - assertEquals(0, cacheStats.getEvictionCount()); - assertEquals(KEYS + misses, cacheStats.getElementCount()); - assertEquals(Long.MAX_VALUE, cacheStats.getMaxTotalWeight()); - assertEquals(KEYS + misses, cacheStats.estimateCurrentWeight()); - } -} diff --git a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheBuilderTest.java b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheBuilderTest.java index e0fd02f39cf..04f040abaf1 100644 --- a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheBuilderTest.java +++ b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheBuilderTest.java @@ -26,7 +26,7 @@ import org.apache.jackrabbit.oak.cache.api.LoadingCache; import org.apache.jackrabbit.oak.cache.api.EvictionCause; import org.apache.jackrabbit.oak.cache.api.CacheBuilder; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.impl.caffeine.CaffeineCacheAdapter; import org.apache.jackrabbit.oak.cache.impl.caffeine.CaffeineLoadingCacheAdapter; import org.junit.Assert; @@ -239,7 +239,7 @@ public void oakCacheStatsAdapterBridgesOakStats() { .weigher((k, v) -> k.length() + v.length()) .recordStats() .build(); - CacheStatsAdapter stats = new CacheStatsAdapter( + CacheStats stats = new CacheStats( cache, "testCache", (k, v) -> k.length() + v.length(), 100); cache.put("aa", "bbb"); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java index 10234e879f5..7bdc2d6bc4f 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java @@ -44,7 +44,7 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; -import static org.apache.jackrabbit.oak.cache.CacheStats.timeInWords; +import static org.apache.jackrabbit.oak.cache.AbstractCacheStats.timeInWords; import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount; import static org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean; diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheStatsMetricsTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheStatsMetricsTest.java index 46afc9ece77..9a3deb4304d 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheStatsMetricsTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/impl/CacheStatsMetricsTest.java @@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean; import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.jetbrains.annotations.NotNull; import org.junit.Test; @@ -94,9 +95,8 @@ private static class TestStats extends AbstractCacheStats { } @Override - protected org.apache.jackrabbit.guava.common.cache.CacheStats getCurrentStats() { - return new org.apache.jackrabbit.guava.common.cache.CacheStats( - HIT_COUNT, MISS_COUNT, MISS_COUNT, 0, LOAD_TIME, EVICTION_COUNT); + protected CacheStatsSnapshot getCurrentStats() { + return new CacheStatsSnapshot(HIT_COUNT, MISS_COUNT, MISS_COUNT, 0, LOAD_TIME, EVICTION_COUNT); } @Override diff --git a/oak-it-osgi/test-bundles.xml b/oak-it-osgi/test-bundles.xml index 96fdb9928d7..2f3255c6d2d 100644 --- a/oak-it-osgi/test-bundles.xml +++ b/oak-it-osgi/test-bundles.xml @@ -54,7 +54,7 @@ org.apache.jackrabbit:oak-segment-azure org.apache.jackrabbit:oak-jcr org.apache.jackrabbit:oak-lucene - org.apache.jackrabbit:oak-search-elastic + org.apache.jackrabbit:oak-search-elastic:jar org.apache.tika:tika-core org.apache.jackrabbit:oak-blob org.apache.jackrabbit:oak-blob-cloud-azure diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java index 0b9019e67a3..342c6ac031b 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java @@ -34,7 +34,7 @@ import org.apache.commons.io.FilenameUtils; import org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean; import org.apache.jackrabbit.oak.api.jmx.CheckpointMBean; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.internal.concurrent.ExecutorHelper; import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard; import org.apache.jackrabbit.oak.plugins.document.spi.JournalPropertyService; @@ -686,7 +686,7 @@ private void initializeExtractedTextCache(BundleContext bundleContext, Configura if (extractedTextProvider != null){ registerExtractedTextProvider(extractedTextProvider); } - AbstractCacheStats stats = extractedTextCache.getCacheStats(); + CacheStats stats = extractedTextCache.getCacheStats(); if (stats != null){ oakRegs.add(registerMBean(whiteboard, CacheStatsMBean.class, stats, diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexerBase.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexerBase.java index bf173b3c9ea..6ac22bb57f2 100644 --- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexerBase.java +++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexerBase.java @@ -21,7 +21,7 @@ import com.codahale.metrics.MetricRegistry; import com.mongodb.ConnectionString; import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser; import org.apache.jackrabbit.oak.commons.pio.Closer; @@ -407,7 +407,7 @@ public void reindex() throws CommitFailedException, IOException { } } ExtractedTextCache extractedTextCache = indexerProvider.getTextCache(); - AbstractCacheStats cacheStats = extractedTextCache == null ? null : extractedTextCache.getCacheStats(); + CacheStats cacheStats = extractedTextCache == null ? null : extractedTextCache.getCacheStats(); log.info("Text extraction cache statistics: {}", cacheStats == null ? "N/A" : cacheStats.cacheInfoAsString()); progressReporter.reindexingTraversalEnd(); diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ExtractedTextCache.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ExtractedTextCache.java index dc3d39571ce..515dca76071 100644 --- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ExtractedTextCache.java +++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ExtractedTextCache.java @@ -38,10 +38,9 @@ import java.util.concurrent.TimeoutException; import org.apache.jackrabbit.oak.api.Blob; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.cache.api.CacheBuilder; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.apache.jackrabbit.oak.commons.IOUtils; import org.apache.jackrabbit.oak.commons.internal.concurrent.ExecutorHelper; @@ -87,7 +86,7 @@ public class ExtractedTextCache { private final ConcurrentHashMap timeoutMap; private final File indexDir; - private final AbstractCacheStats cacheStats; + private final CacheStats cacheStats; private final boolean alwaysUsePreExtractedCache; private volatile ExecutorService executorService; private volatile int timeoutCount; @@ -111,7 +110,7 @@ public ExtractedTextCache(long maxWeight, long expiryTimeInSecs, boolean alwaysU .expireAfterAccess(Duration.ofSeconds(expiryTimeInSecs)) .recordStats() .build(); - cacheStats = new CacheStatsAdapter(cache, "ExtractedTextCache", + cacheStats = new CacheStats(cache, "ExtractedTextCache", EmpiricalWeigher.INSTANCE, maxWeight); } else { cache = null; @@ -250,7 +249,7 @@ public int getTimeoutCount() { } @Nullable - public AbstractCacheStats getCacheStats() { + public CacheStats getCacheStats() { return cacheStats; } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java index e887a438281..a3200eb2b51 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java @@ -27,7 +27,7 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.segment.util.SafeEncode; import org.apache.jackrabbit.oak.spi.blob.BlobStore; @@ -227,12 +227,12 @@ public SegmentBlob readBlob(@NotNull RecordId id) { } @NotNull - public AbstractCacheStats getStringCacheStats() { + public CacheStats getStringCacheStats() { return stringCache.getStats(); } @NotNull - public AbstractCacheStats getTemplateCacheStats() { + public CacheStats getTemplateCacheStats() { return templateCache.getStats(); } } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/ReaderCache.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/ReaderCache.java index 9d52fce3148..5b684edf03b 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/ReaderCache.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/ReaderCache.java @@ -25,18 +25,13 @@ import java.util.Arrays; import java.util.function.Function; -import org.apache.jackrabbit.oak.cache.api.Weigher; -import org.apache.jackrabbit.guava.common.cache.CacheStats; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheLIRS; import org.apache.jackrabbit.oak.cache.api.Cache; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - - /** * A cache consisting of a fast and slow component. The fast cache for small items is based * on an array, and a slow one uses a LIRS cache. @@ -62,7 +57,7 @@ public abstract class ReaderCache { private final Cache cache; @NotNull - private final AbstractCacheStats cacheStats; + private final CacheStats cacheStats; /** * Create a new string cache. @@ -84,11 +79,11 @@ protected ReaderCache(long maxWeight, int averageWeight, .weigher(weigher::weigh) .build() .asOakCache(); - cacheStats = new CacheStatsAdapter(cache, name, weigher, maxWeight); + cacheStats = new CacheStats(cache, name, weigher, maxWeight); } @NotNull - public AbstractCacheStats getStats() { + public CacheStats getStats() { return cacheStats; } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCache.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCache.java index 61f07029358..76016737431 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCache.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCache.java @@ -23,9 +23,8 @@ import java.util.concurrent.atomic.LongAdder; import java.util.function.Supplier; -import org.apache.jackrabbit.guava.common.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.CacheBuilder; -import org.apache.jackrabbit.oak.cache.api.EvictionListener; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.jetbrains.annotations.NotNull; @@ -52,7 +51,7 @@ public void put(@NotNull K key, @NotNull RecordId value, byte cost) { * @return access statistics for this cache */ @NotNull - public abstract CacheStats getStats(); + public abstract CacheStatsSnapshot getStats(); /** * Factory method for creating {@code RecordCache} instances. The returned @@ -111,8 +110,8 @@ static final Supplier> emptyFactory() { } @Override - public @NotNull CacheStats getStats() { - return new CacheStats(0, missCount.sum(), 0, 0, 0, 0); + public @NotNull CacheStatsSnapshot getStats() { + return new CacheStatsSnapshot(0, missCount.sum(), 0, 0, 0, 0); } @Override @@ -147,10 +146,10 @@ private static class Default extends RecordCache { private final LongAdder loadCount = new LongAdder(); @Override - public @NotNull CacheStats getStats() { - org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot snapshot = cache.stats(); + public @NotNull CacheStatsSnapshot getStats() { + CacheStatsSnapshot snapshot = cache.stats(); // any addition to the cache counts as load by our definition - return new CacheStats(snapshot.hitCount(), snapshot.missCount(), + return new CacheStatsSnapshot(snapshot.hitCount(), snapshot.missCount(), loadCount.sum(), 0, 0, snapshot.evictionCount()); } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCacheStats.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCacheStats.java index b5e92fce005..8ddef871521 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCacheStats.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordCacheStats.java @@ -22,8 +22,8 @@ import java.util.function.Supplier; -import org.apache.jackrabbit.guava.common.cache.CacheStats; import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.jetbrains.annotations.NotNull; /** @@ -32,7 +32,7 @@ public class RecordCacheStats extends AbstractCacheStats { @NotNull - private final Supplier stats; + private final Supplier stats; @NotNull private final Supplier elementCount; @@ -42,7 +42,7 @@ public class RecordCacheStats extends AbstractCacheStats { public RecordCacheStats( @NotNull String name, - @NotNull Supplier stats, + @NotNull Supplier stats, @NotNull Supplier elementCount, @NotNull Supplier weight) { super(name); @@ -52,7 +52,7 @@ public RecordCacheStats( } @Override - protected CacheStats getCurrentStats() { + protected CacheStatsSnapshot getCurrentStats() { return stats.get(); } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java index 0f49eb119aa..57540613380 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java @@ -28,10 +28,10 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.function.Supplier; -import org.apache.jackrabbit.guava.common.cache.CacheStats; import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.cache.api.CacheBuilder; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.apache.jackrabbit.oak.cache.api.EvictionCause; import org.apache.jackrabbit.oak.segment.CacheWeights.SegmentCacheWeigher; import org.jetbrains.annotations.NotNull; @@ -312,8 +312,8 @@ protected Stats(@NotNull String name, long maximumWeight, @NotNull Supplier Supplier accumulateRecordCacheStats( + private static Supplier accumulateRecordCacheStats( final Iterable> caches) { - return new Supplier() { - @Override - public CacheStats get() { - CacheStats stats = new CacheStats(0, 0, 0, 0, 0, 0); - for (RecordCache cache : caches) { - stats = stats.plus(cache.getStats()); - } - return stats; + return () -> { + CacheStatsSnapshot stats = new CacheStatsSnapshot(0, 0, 0, 0, 0, 0); + for (RecordCache cache : caches) { + stats = stats.plus(cache.getStats()); } + return stats; }; } @@ -399,12 +396,7 @@ public Long get() { @Override public CacheStatsMBean getNodeCacheStats() { return new RecordCacheStats("Node deduplication cache stats", - new Supplier() { - @Override - public CacheStats get() { - return nodeCache().getStats(); - } - }, + () -> nodeCache().getStats(), new Supplier() { @Override public Long get() { diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/PriorityCache.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/PriorityCache.java index 209d1580290..58dc75f6c37 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/PriorityCache.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/PriorityCache.java @@ -37,7 +37,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.apache.jackrabbit.guava.common.cache.CacheStats; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.apache.jackrabbit.oak.cache.api.Weigher; /** @@ -400,8 +400,8 @@ private static String toString(AtomicInteger[] ints) { * @return access statistics for this cache */ @NotNull - public CacheStats getStats() { - return new CacheStats(hitCount.sum(), missCount.sum(), loadCount.sum(), + public CacheStatsSnapshot getStats() { + return new CacheStatsSnapshot(hitCount.sum(), missCount.sum(), loadCount.sum(), loadExceptionCount.sum(), 0, evictionCount.sum()); } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/SegmentCacheStats.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/SegmentCacheStats.java index 541e31aa82c..49aec4196ed 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/SegmentCacheStats.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/SegmentCacheStats.java @@ -23,8 +23,8 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.function.Supplier; -import org.apache.jackrabbit.guava.common.cache.CacheStats; import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.api.CacheStatsSnapshot; import org.jetbrains.annotations.NotNull; public class SegmentCacheStats extends AbstractCacheStats { @@ -67,8 +67,8 @@ public SegmentCacheStats(@NotNull String name, } @Override - protected CacheStats getCurrentStats() { - return new CacheStats( + protected CacheStatsSnapshot getCurrentStats() { + return new CacheStatsSnapshot( hitCount.get(), missCount.get(), loadSuccessCount.get(), diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/package-info.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/package-info.java index 0ad0171f1b9..96eb50916cf 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/package-info.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/package-info.java @@ -15,7 +15,7 @@ * limitations under the License. */ @Internal(since = "1.0.0") -@Version("6.1.0") +@Version("7.0.0") package org.apache.jackrabbit.oak.segment.spi.persistence.persistentcache; import org.apache.jackrabbit.oak.commons.annotations.Internal; diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/PriorityCacheTest.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/PriorityCacheTest.java index bfb8850ee91..2873379f6b0 100644 --- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/PriorityCacheTest.java +++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/PriorityCacheTest.java @@ -191,7 +191,7 @@ public void loadExceptionCount() { assertEquals(0, cache.getStats().evictionCount()); assertEquals(success, cache.size()); - assertEquals(failure, cache.getStats().loadExceptionCount()); + assertEquals(failure, cache.getStats().loadFailureCount()); } } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java index 4b4de76757c..c3128cc273e 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java @@ -16,7 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.document; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.json.JsopReader; import org.apache.jackrabbit.oak.commons.json.JsopTokenizer; import org.jetbrains.annotations.NotNull; @@ -69,7 +69,7 @@ abstract Entry newEntry(@NotNull RevisionVector from, * @return the statistics for this cache. */ @NotNull - abstract Iterable getStats(); + abstract Iterable getStats(); /** * Invalidates all the entries in the cache. diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java index 1078b92c6f9..9943dc9cdd9 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java @@ -76,7 +76,7 @@ import org.apache.jackrabbit.oak.api.Blob; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.PerfLogger; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; import org.apache.jackrabbit.oak.commons.collections.ListUtils; @@ -419,7 +419,7 @@ public final class DocumentNodeStore * Key: PathRev, value: DocumentNodeState */ private final Cache nodeCache; - private final AbstractCacheStats nodeCacheStats; + private final CacheStats nodeCacheStats; /** * Child node cache. @@ -427,7 +427,7 @@ public final class DocumentNodeStore * Key: PathRev, value: Children */ private final Cache nodeChildrenCache; - private final AbstractCacheStats nodeChildrenCacheStats; + private final CacheStats nodeChildrenCacheStats; /** * The change log to keep track of commits for diff operations. @@ -1292,16 +1292,16 @@ public ClusterNodeInfo getClusterInfo() { return clusterNodeInfo; } - public AbstractCacheStats getNodeCacheStats() { + public CacheStats getNodeCacheStats() { return nodeCacheStats; } - public AbstractCacheStats getNodeChildrenCacheStats() { + public CacheStats getNodeChildrenCacheStats() { return nodeChildrenCacheStats; } @NotNull - public Iterable getDiffCacheStats() { + public Iterable getDiffCacheStats() { return diffCache.getStats(); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java index 1a744b12556..e4226c7bc13 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java @@ -38,8 +38,7 @@ import org.apache.jackrabbit.oak.cache.CacheLIRS; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.cache.api.CacheBuilder; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; -import org.apache.jackrabbit.oak.cache.api.EvictionCause; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.api.Weigher; import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; @@ -1003,17 +1002,17 @@ public Cache buildPrevDocumentsCache(DocumentStore do public NodeDocumentCache buildNodeDocumentCache(DocumentStore docStore, NodeDocumentLocks locks) { Cache nodeDocumentsCache = buildDocumentCache(docStore); - AbstractCacheStats nodeDocumentsCacheStats = newCacheStatsAdapter(nodeDocumentsCache, "Document-Documents", getDocumentCacheSize()); + CacheStats nodeDocumentsCacheStats = newCacheStatsAdapter(nodeDocumentsCache, "Document-Documents", getDocumentCacheSize()); Cache prevDocumentsCache = buildPrevDocumentsCache(docStore); - AbstractCacheStats prevDocumentsCacheStats = newCacheStatsAdapter(prevDocumentsCache, "Document-PrevDocuments", getPrevDocumentCacheSize()); + CacheStats prevDocumentsCacheStats = newCacheStatsAdapter(prevDocumentsCache, "Document-PrevDocuments", getPrevDocumentCacheSize()); return new NodeDocumentCache(nodeDocumentsCache, nodeDocumentsCacheStats, prevDocumentsCache, prevDocumentsCacheStats, locks); } @SuppressWarnings({"unchecked", "rawtypes"}) - AbstractCacheStats newCacheStatsAdapter(Cache cache, String name, long maxWeight) { - return new CacheStatsAdapter((Cache) cache, name, (Weigher) weigher, maxWeight); + CacheStats newCacheStatsAdapter(Cache cache, String name, long maxWeight) { + return new CacheStats((Cache) cache, name, (Weigher) weigher, maxWeight); } /** diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java index 58b78df936c..6e9f95ecd2c 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java @@ -60,6 +60,7 @@ import org.apache.jackrabbit.oak.api.jmx.CheckpointMBean; import org.apache.jackrabbit.oak.api.jmx.PersistentCacheStatsMBean; import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.pio.Closer; import org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.VersionGCStats; import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder; @@ -878,7 +879,7 @@ private void registerJMXBeans(final DocumentNodeStore store, DocumentNodeStoreBu } DocumentStore ds = store.getDocumentStore(); if (ds.getCacheStats() != null) { - for (AbstractCacheStats cacheStats : ds.getCacheStats()) { + for (CacheStats cacheStats : ds.getCacheStats()) { registerCacheStatsMBean(cacheStats); } } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java index cfb42d65c0f..889446fdc8b 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java @@ -22,7 +22,7 @@ import java.util.Set; import java.util.stream.Collectors; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Condition; import org.apache.jackrabbit.oak.plugins.document.cache.CacheInvalidationStats; import org.apache.jackrabbit.oak.plugins.document.util.Utils; @@ -431,7 +431,7 @@ T findAndUpdate(Collection collection, * @return status information about the cache */ @Nullable - Iterable getCacheStats(); + Iterable getCacheStats(); /** * @return description of the underlying storage. diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java index 2da34f667d2..3667f40ce2b 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java @@ -20,7 +20,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.sort.StringSort; import org.apache.jackrabbit.oak.commons.time.Stopwatch; import org.apache.jackrabbit.oak.plugins.document.util.StringValue; @@ -298,7 +298,7 @@ private void trackStats(Path path, @NotNull @Override - Iterable getStats() { + Iterable getStats() { return cache.getStats(); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java index da42b338ef9..7a5d7f518bd 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java @@ -20,10 +20,9 @@ import java.util.HashMap; import java.util.Map; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; import org.apache.jackrabbit.oak.cache.api.Cache; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.json.JsopBuilder; import org.apache.jackrabbit.oak.commons.json.JsopReader; import org.apache.jackrabbit.oak.commons.json.JsopTokenizer; @@ -46,11 +45,11 @@ public class LocalDiffCache extends DiffCache { private static int MAX_ENTRY_SIZE = 16 * 1024 * 1024; private final Cache diffCache; - private final AbstractCacheStats diffCacheStats; + private final CacheStats diffCacheStats; LocalDiffCache(DocumentNodeStoreBuilder builder) { this.diffCache = builder.buildLocalDiffCache(); - this.diffCacheStats = new CacheStatsAdapter(diffCache, + this.diffCacheStats = new CacheStats(diffCache, "Document-LocalDiff", (k, v) -> builder.getWeigher().weigh(k, v), builder.getLocalDiffCacheSize()); } @@ -108,7 +107,7 @@ private boolean exceedsSize(){ @NotNull @Override - public Iterable getStats() { + public Iterable getStats() { return Collections.singleton(diffCacheStats); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java index 8f27d8164cc..cde4a196e82 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java @@ -18,10 +18,9 @@ import java.util.Collections; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; import org.apache.jackrabbit.oak.cache.api.Cache; -import org.apache.jackrabbit.oak.cache.api.CacheStatsAdapter; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.util.StringValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -51,12 +50,12 @@ public class MemoryDiffCache extends DiffCache { * Key: PathRev, value: StringValue */ protected final Cache diffCache; - protected final AbstractCacheStats diffCacheStats; + protected final CacheStats diffCacheStats; protected MemoryDiffCache(DocumentNodeStoreBuilder builder) { diffCache = builder.buildMemoryDiffCache(); - diffCacheStats = new CacheStatsAdapter(diffCache, "Document-MemoryDiff", + diffCacheStats = new CacheStats(diffCache, "Document-MemoryDiff", (k, v) -> builder.getWeigher().weigh(k, v), builder.getMemoryDiffCacheSize()); } @@ -97,7 +96,7 @@ public Entry newEntry(@NotNull RevisionVector from, @NotNull @Override - public Iterable getStats() { + public Iterable getStats() { return Collections.singleton(diffCacheStats); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java index 1d817b7a462..4e528dc0b58 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java @@ -16,9 +16,9 @@ */ package org.apache.jackrabbit.oak.plugins.document; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.cache.api.CacheBuilder; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; import org.apache.jackrabbit.oak.plugins.document.util.RevisionsKey; import org.jetbrains.annotations.NotNull; @@ -93,7 +93,7 @@ public Entry newEntry(@NotNull RevisionVector from, @NotNull RevisionVector to, @NotNull @Override - public Iterable getStats() { + public Iterable getStats() { return IterableUtils.chainedIterable(localCache.getStats(), memoryCache.getStats()); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java index 4ff05d09529..7ac1ddf5cdc 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java @@ -32,9 +32,9 @@ import java.util.function.Function; import java.util.function.Predicate; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.cache.CacheValue; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; import org.apache.jackrabbit.oak.plugins.document.Document; import org.apache.jackrabbit.oak.plugins.document.NodeDocument; @@ -50,7 +50,7 @@ public class NodeDocumentCache implements Closeable { private final Cache nodeDocumentsCache; - private final AbstractCacheStats nodeDocumentsCacheStats; + private final CacheStats nodeDocumentsCacheStats; /** * The previous documents cache @@ -58,16 +58,16 @@ public class NodeDocumentCache implements Closeable { * Key: StringValue, value: NodeDocument */ private final Cache prevDocumentsCache; - private final AbstractCacheStats prevDocumentsCacheStats; + private final CacheStats prevDocumentsCacheStats; private final NodeDocumentLocks locks; private final List changeTrackers; public NodeDocumentCache(@NotNull Cache nodeDocumentsCache, - @NotNull AbstractCacheStats nodeDocumentsCacheStats, + @NotNull CacheStats nodeDocumentsCacheStats, @NotNull Cache prevDocumentsCache, - @NotNull AbstractCacheStats prevDocumentsCacheStats, + @NotNull CacheStats prevDocumentsCacheStats, @NotNull NodeDocumentLocks locks) { this.nodeDocumentsCache = nodeDocumentsCache; this.nodeDocumentsCacheStats = nodeDocumentsCacheStats; @@ -319,7 +319,7 @@ public Iterable values() { return IterableUtils.chainedIterable(nodeDocumentsCache.asMap().values(), prevDocumentsCache.asMap().values()); } - public Iterable getCacheStats() { + public Iterable getCacheStats() { return Arrays.asList(nodeDocumentsCacheStats, prevDocumentsCacheStats); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java index b53fefe0417..d28d1696022 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java @@ -33,7 +33,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.stream.Collectors; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.properties.SystemPropertySupplier; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.Document; @@ -444,7 +444,7 @@ public WriteConcern getWriteConcern() { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return null; } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java index a683938213c..6efdb453f11 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java @@ -42,8 +42,8 @@ import java.util.stream.StreamSupport; import org.apache.commons.io.IOUtils; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; import org.apache.jackrabbit.oak.commons.collections.IteratorUtils; import org.apache.jackrabbit.oak.commons.collections.ListUtils; @@ -2085,7 +2085,7 @@ public void dispose() { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return nodesCache.getCacheStats(); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java index 621f753c3b3..41aa3c9ceae 100755 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java @@ -59,8 +59,8 @@ import javax.sql.DataSource; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.collections.IteratorUtils; import org.apache.jackrabbit.oak.commons.collections.ListUtils; import org.apache.jackrabbit.oak.commons.collections.SetUtils; @@ -836,7 +836,7 @@ private T getIfCached(Collection collection, String id, } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return nodesCache.getCacheStats(); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java index 3223c5db290..8ffb8796b12 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java @@ -22,7 +22,7 @@ import java.util.Map; import java.util.function.Supplier; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.Document; @@ -213,7 +213,7 @@ public void setReadWriteMode(String readWriteMode) { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return leaseChecking(delegate::getCacheStats); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java index 1db5af0944c..79a2c8c3fc5 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java @@ -20,7 +20,7 @@ import java.util.Map; import java.util.concurrent.Callable; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.json.JsopBuilder; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.Document; @@ -366,15 +366,10 @@ public void setReadWriteMode(String readWriteMode) { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { try { logMethod("getCacheStats"); - return logResult(new Callable>() { - @Override - public Iterable call() throws Exception { - return store.getCacheStats(); - } - }); + return logResult(store::getCacheStats); } catch (Exception e) { logException(e); throw convert(e); diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java index b870da9a23e..8b59b5d416a 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java @@ -19,7 +19,7 @@ import java.util.List; import java.util.Map; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.Document; import org.apache.jackrabbit.oak.plugins.document.DocumentStore; @@ -154,7 +154,7 @@ public synchronized void setReadWriteMode(String readWriteMode) { } @Override - public synchronized Iterable getCacheStats() { + public synchronized Iterable getCacheStats() { return store.getCacheStats(); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/ThrottlingDocumentStoreWrapper.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/ThrottlingDocumentStoreWrapper.java index d1f6417fd21..d0c6471cbdb 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/ThrottlingDocumentStoreWrapper.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/ThrottlingDocumentStoreWrapper.java @@ -16,7 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.document.util; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.Document; import org.apache.jackrabbit.oak.plugins.document.DocumentStore; @@ -233,7 +233,7 @@ public void setReadWriteMode(String readWriteMode) { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return store.getCacheStats(); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java index 4e3dbbb7083..974ef43171b 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java @@ -25,7 +25,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.Document; import org.apache.jackrabbit.oak.plugins.document.DocumentStore; @@ -423,10 +423,10 @@ public void setReadWriteMode(String readWriteMode) { @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { try { long start = now(); - Iterable result = base.getCacheStats(); + Iterable result = base.getCacheStats(); updateAndLogTimes("getCacheStats", start, 0, 0); return result; } catch (Exception e) { diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java index 2d69c7fb791..14f18f395a7 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java @@ -18,7 +18,7 @@ import java.util.Collections; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -61,7 +61,7 @@ public boolean done() { @NotNull @Override - public Iterable getStats() { + public Iterable getStats() { return Collections.emptyList(); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java index 6289c232520..fe200862d7a 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java @@ -21,7 +21,7 @@ import java.util.List; import java.util.Map; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.cache.CacheInvalidationStats; import org.jetbrains.annotations.NotNull; @@ -215,7 +215,7 @@ public void setReadWriteMode(String readWriteMode) { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return delegate.getCacheStats(); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderTest.java index 4a9295fafa9..324473fabf0 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderTest.java @@ -18,7 +18,7 @@ import com.mongodb.client.MongoClient; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.collections.IterableUtils; import org.junit.Test; import org.junit.runner.RunWith; @@ -74,11 +74,11 @@ protected DocumentMK.Builder newBuilder(MongoClient client, String dbName) throw @Test public void lazyInit() throws Exception { - Iterable cacheStats = mk.getDocumentStore().getCacheStats(); + Iterable cacheStats = mk.getDocumentStore().getCacheStats(); assertNotNull(cacheStats); assertEquals(2, IterableUtils.size(cacheStats)); - AbstractCacheStats docCacheStats = IterableUtils.get(cacheStats, 0); - AbstractCacheStats prevDocCacheStats = IterableUtils.get(cacheStats, 1); + CacheStats docCacheStats = IterableUtils.get(cacheStats, 0); + CacheStats prevDocCacheStats = IterableUtils.get(cacheStats, 1); assertEquals("Document-Documents", docCacheStats.getName()); assertEquals("Document-PrevDocuments", prevDocCacheStats.getName()); assertEquals(expectedDocCacheSize, docCacheStats.getMaxTotalWeight()); diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilderTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilderTest.java index dff4d9b7d0f..10f7c1b1415 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilderTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilderTest.java @@ -21,8 +21,8 @@ import java.lang.reflect.Method; import java.util.Map; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.api.Cache; import org.apache.jackrabbit.oak.plugins.document.cache.NodeDocumentCache; import org.apache.jackrabbit.oak.plugins.document.locks.StripedNodeDocumentLocks; @@ -64,7 +64,7 @@ public void buildNodeDocumentCacheStatsAreNonEmpty() { DocumentStore store = new MemoryDocumentStore(); NodeDocumentCache cache = DocumentNodeStoreBuilder.newDocumentNodeStoreBuilder() .buildNodeDocumentCache(store, new StripedNodeDocumentLocks()); - Iterable stats = cache.getCacheStats(); + Iterable stats = cache.getCacheStats(); Assert.assertNotNull(stats); Assert.assertTrue(stats.iterator().hasNext()); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreDiffTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreDiffTest.java index 527239c9c4b..e90dcb221a6 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreDiffTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreDiffTest.java @@ -17,7 +17,7 @@ package org.apache.jackrabbit.oak.plugins.document; import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.DefaultNodeStateDiff; @@ -63,14 +63,14 @@ public void diff() throws Exception { merge(store, builder); } - Iterable stats = store.getDiffCacheStats(); - for (AbstractCacheStats cs : stats) { + Iterable stats = store.getDiffCacheStats(); + for (CacheStats cs : stats) { cs.resetStats(); } // must not cause cache misses Diff.perform(before, after); - for (AbstractCacheStats cs : stats) { + for (CacheStats cs : stats) { assertEquals(0, cs.getMissCount()); } } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java index aadc7ee8cc5..a53007342be 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java @@ -19,7 +19,7 @@ import java.util.List; import java.util.Map; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.cache.CacheInvalidationStats; import org.jetbrains.annotations.NotNull; @@ -150,7 +150,7 @@ public void setReadWriteMode(String readWriteMode) { } @Override - public Iterable getCacheStats() { + public Iterable getCacheStats() { return store.getCacheStats(); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java index 6bf7c3bd43c..38ddb3040f6 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java @@ -22,7 +22,7 @@ import java.util.Map; import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.LocalDiffCache.Diff; import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; @@ -56,7 +56,7 @@ public void simpleDiff() throws Exception{ o.reset(); DiffCache cache = store.getDiffCache(); - Iterable stats = cache.getStats(); + Iterable stats = cache.getStats(); NodeBuilder builder = store.getRoot().builder(); builder.child("a").child("a2").setProperty("foo", "bar"); @@ -118,24 +118,24 @@ private static DocumentMK create(DocumentStore ds, int clusterId){ .open(); } - private static long getHitCount(Iterable stats) { + private static long getHitCount(Iterable stats) { long hitCount = 0; - for (AbstractCacheStats cs : stats) { + for (CacheStats cs : stats) { hitCount += cs.getHitCount(); } return hitCount; } - private static long getMissCount(Iterable stats) { + private static long getMissCount(Iterable stats) { long missCount = 0; - for (AbstractCacheStats cs : stats) { + for (CacheStats cs : stats) { missCount += cs.getMissCount(); } return missCount; } - private static void resetStats(Iterable stats) { - for (AbstractCacheStats cs : stats) { + private static void resetStats(Iterable stats) { + for (CacheStats cs : stats) { cs.resetStats(); } } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCacheTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCacheTest.java index d37ae5a3cbf..a96980e08d7 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCacheTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCacheTest.java @@ -18,7 +18,7 @@ import java.util.UUID; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.junit.Rule; import org.junit.Test; @@ -68,7 +68,7 @@ public void getStatsReturnsNonEmptyIterable() { DiffCache cache = new MemoryDiffCache(builderProvider.newBuilder() .setCacheSegmentCount(1) .memoryCacheDistribution(0, 0, 0, 99, 0)); - Iterable statsIterable = cache.getStats(); + Iterable statsIterable = cache.getStats(); assertNotNull(statsIterable); assertTrue(statsIterable.iterator().hasNext()); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeStoreDiffTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeStoreDiffTest.java index 3e6f1e4e063..c30cde3396b 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeStoreDiffTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeStoreDiffTest.java @@ -25,7 +25,7 @@ import java.util.Set; import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.plugins.commit.AnnotatingConflictHandler; import org.apache.jackrabbit.oak.plugins.commit.ConflictHook; @@ -228,7 +228,7 @@ public void diffBranchBase() throws Exception { private long diffCacheRequests(DocumentNodeStore ns) { long num = 0; - for (AbstractCacheStats stats : ns.getDiffCacheStats()) { + for (CacheStats stats : ns.getDiffCacheStats()) { num += stats.getRequestCount(); } return num; diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCacheTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCacheTest.java index cbb2e1ae943..0923ca8750a 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCacheTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCacheTest.java @@ -18,7 +18,7 @@ import java.lang.reflect.Field; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.junit.Rule; import org.junit.Test; @@ -88,7 +88,7 @@ public void newEntryExternalPopulatesMemoryCache() { @Test public void getStatsReturnsNonEmptyIterable() { TieredDiffCache cache = buildCache(); - Iterable stats = cache.getStats(); + Iterable stats = cache.getStats(); assertNotNull(stats); assertTrue(stats.iterator().hasNext()); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/CacheChangesTrackerTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/CacheChangesTrackerTest.java index 1702a88de3e..bd43c91cd09 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/CacheChangesTrackerTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/CacheChangesTrackerTest.java @@ -27,8 +27,8 @@ import org.apache.jackrabbit.oak.cache.CacheLIRS; import org.apache.jackrabbit.oak.cache.api.Cache; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.DocumentStore; import org.apache.jackrabbit.oak.plugins.document.NodeDocument; @@ -153,8 +153,8 @@ public void testOnlyExternalChanges() { private NodeDocumentCache createCache() { Cache nodeDocumentsCache = (new CacheLIRS(10)).asOakCache(); Cache prevDocumentsCache = (new CacheLIRS(10)).asOakCache(); - AbstractCacheStats nodeDocumentsCacheStats = Mockito.mock(AbstractCacheStats.class); - AbstractCacheStats prevDocumentsCacheStats = Mockito.mock(AbstractCacheStats.class); + CacheStats nodeDocumentsCacheStats = Mockito.mock(CacheStats.class); + CacheStats prevDocumentsCacheStats = Mockito.mock(CacheStats.class); NodeDocumentLocks locks = new StripedNodeDocumentLocks(); return new NodeDocumentCache(nodeDocumentsCache, nodeDocumentsCacheStats, prevDocumentsCache, prevDocumentsCacheStats, locks); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCacheTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCacheTest.java index eafe2607a94..14f4f988506 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCacheTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCacheTest.java @@ -16,7 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.document.cache; -import org.apache.jackrabbit.oak.cache.AbstractCacheStats; +import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.plugins.document.Document; import org.apache.jackrabbit.oak.plugins.document.DocumentStore; import org.apache.jackrabbit.oak.plugins.document.NodeDocument; @@ -126,7 +126,7 @@ public void invalidateRemovesDocumentFromCache() { @Test public void getCacheStatsReturnsNonEmptyIterable() { - Iterable statsIterable = cache.getCacheStats(); + Iterable statsIterable = cache.getCacheStats(); assertNotNull(statsIterable); assertTrue(statsIterable.iterator().hasNext()); } diff --git a/specs/guava-cache-removal/TASKS.md b/specs/guava-cache-removal/TASKS.md index 303b5256429..93d0fbb2bf4 100644 --- a/specs/guava-cache-removal/TASKS.md +++ b/specs/guava-cache-removal/TASKS.md @@ -20,9 +20,7 @@ This document decomposes the Oak Cache API migration plan (PLAN.md) into indepen **Remaining:** -- OAK-12157, OAK-12158 (oak-segment-tar) — not yet started -- OAK-12159 (oak-blob-plugins) — not yet started -- OAK-12161, OAK-12162 — blocked on OAK-12157, OAK-12158, OAK-12159 +- OAK-12162 — in progress on branch OAK-12161 ## Dependency Graph