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;
+ }
}
}