This is an automated email from the ASF dual-hosted git repository.

nfsantos pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new b7d25c52d1 OAK-12036 - Expose stats in the PersistentCache (#2657)
b7d25c52d1 is described below

commit b7d25c52d12e03421b5047414abdfed5b3d69f43
Author: Nuno Santos <[email protected]>
AuthorDate: Fri Dec 12 13:12:26 2025 +0100

    OAK-12036 - Expose stats in the PersistentCache (#2657)
---
 .../org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java | 5 +++++
 .../spi/persistence/persistentcache/AbstractPersistentCache.java  | 1 +
 .../persistence/persistentcache/DelegatingPersistentCache.java    | 6 ++++++
 .../segment/spi/persistence/persistentcache/PersistentCache.java  | 8 ++++++++
 .../oak/segment/spi/persistence/persistentcache/package-info.java | 2 +-
 .../org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java    | 5 +++++
 .../oak/segment/file/preloader/SegmentPreloaderTest.java          | 6 ++++++
 7 files changed, 32 insertions(+), 1 deletion(-)

diff --git 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
index 0d570fe145..4c7782a61f 100644
--- 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
+++ 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
@@ -192,6 +192,11 @@ public abstract class AbstractFileStore implements 
SegmentStore, Closeable {
         return segmentCache.getCacheStats();
     }
 
+    @Nullable
+    public CacheStatsMBean getPersistentCacheStats() {
+        return persistentCache == null ? null : 
persistentCache.getCacheStats();
+    }
+
     @NotNull
     public CacheStatsMBean getStringCacheStats() {
         return segmentReader.getStringCacheStats();
diff --git 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/AbstractPersistentCache.java
 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/AbstractPersistentCache.java
index 832ada3c89..e60ae43867 100644
--- 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/AbstractPersistentCache.java
+++ 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/AbstractPersistentCache.java
@@ -125,6 +125,7 @@ public abstract class AbstractPersistentCache implements 
PersistentCache, Closea
      * @return Statistics for this cache.
      */
     @NotNull
+    @Override
     public AbstractCacheStats getCacheStats() {
         return segmentCacheStats;
     }
diff --git 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/DelegatingPersistentCache.java
 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/DelegatingPersistentCache.java
index 4895e4baa9..db5f7c53d1 100644
--- 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/DelegatingPersistentCache.java
+++ 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/DelegatingPersistentCache.java
@@ -18,6 +18,7 @@
  */
 package org.apache.jackrabbit.oak.segment.spi.persistence.persistentcache;
 
+import org.apache.jackrabbit.oak.cache.AbstractCacheStats;
 import org.apache.jackrabbit.oak.commons.Buffer;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -51,4 +52,9 @@ public abstract class DelegatingPersistentCache implements 
PersistentCache {
     public void cleanUp() {
         delegate().cleanUp();
     }
+
+    @Override
+    public AbstractCacheStats getCacheStats() {
+        return delegate().getCacheStats();
+    }
 }
diff --git 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/PersistentCache.java
 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/PersistentCache.java
index 72fa0a8c8b..aa71b10bf9 100644
--- 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/PersistentCache.java
+++ 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/persistentcache/PersistentCache.java
@@ -17,6 +17,7 @@
  */
 package org.apache.jackrabbit.oak.segment.spi.persistence.persistentcache;
 
+import org.apache.jackrabbit.oak.cache.AbstractCacheStats;
 import org.apache.jackrabbit.oak.commons.Buffer;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -64,4 +65,11 @@ public interface PersistentCache {
      * cache size, maximum number of entries, etc.)
      */
     void cleanUp();
+
+    /**
+     * Returns the cache statistics.
+     * @return the cache statistics, or {@code null} if statistics are not 
available
+     */
+    @Nullable
+    AbstractCacheStats getCacheStats();
 }
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 1573faf034..611279bc26 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("5.1.0")
+@Version("6.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/SegmentCompactionIT.java
 
b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
index 12250da7c5..745dae1638 100644
--- 
a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
+++ 
b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
@@ -278,6 +278,11 @@ public class SegmentCompactionIT {
         CacheStatsMBean segmentCacheStats = fileStore.getSegmentCacheStats();
         registrations.add(registerMBean(segmentCacheStats,
                 new ObjectName("IT:TYPE=" + segmentCacheStats.getName())));
+        CacheStatsMBean persistentCacheStats = 
fileStore.getPersistentCacheStats();
+        if (persistentCacheStats != null) {
+            registrations.add(registerMBean(persistentCacheStats,
+                    new ObjectName("IT:TYPE=" + 
persistentCacheStats.getName())));
+        }
         CacheStatsMBean stringCacheStats = fileStore.getStringCacheStats();
         registrations.add(registerMBean(stringCacheStats,
                 new ObjectName("IT:TYPE=" + stringCacheStats.getName())));
diff --git 
a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/preloader/SegmentPreloaderTest.java
 
b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/preloader/SegmentPreloaderTest.java
index 45c597c0d6..9be8947db9 100644
--- 
a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/preloader/SegmentPreloaderTest.java
+++ 
b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/preloader/SegmentPreloaderTest.java
@@ -21,6 +21,7 @@ package org.apache.jackrabbit.oak.segment.file.preloader;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.cache.AbstractCacheStats;
 import org.apache.jackrabbit.oak.commons.Buffer;
 import org.apache.jackrabbit.oak.segment.Segment;
 import org.apache.jackrabbit.oak.segment.SegmentId;
@@ -380,6 +381,11 @@ public class SegmentPreloaderTest {
         public void cleanUp() {
             segments.clear();
         }
+
+        @Override
+        public @Nullable AbstractCacheStats getCacheStats() {
+            return null;
+        }
     }
 
 }

Reply via email to