You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2015/07/15 15:58:55 UTC
svn commit: r1691218 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment:
SegmentNodeStoreService.java SegmentTracker.java StringCache.java
Author: mduerig
Date: Wed Jul 15 13:58:54 2015
New Revision: 1691218
URL: http://svn.apache.org/r1691218
Log:
OAK-3007: SegmentStore cache does not take "string" map into account
CacheStatsMBean for the string cache
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java?rev=1691218&r1=1691217&r2=1691218&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java Wed Jul 15 13:58:54 2015
@@ -51,7 +51,9 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean;
import org.apache.jackrabbit.oak.api.jmx.CheckpointMBean;
+import org.apache.jackrabbit.oak.cache.CacheStats;
import org.apache.jackrabbit.oak.osgi.ObserverTracker;
import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
import org.apache.jackrabbit.oak.plugins.blob.BlobGC;
@@ -256,6 +258,7 @@ public class SegmentNodeStoreService ext
private Registration revisionGCRegistration;
private Registration blobGCRegistration;
private Registration compactionStrategyRegistration;
+ private Registration stringCacheMBean;
private Registration fsgcMonitorMBean;
private WhiteboardExecutor executor;
private boolean customBlobStore;
@@ -396,6 +399,13 @@ public class SegmentNodeStoreService ext
.getCompactionStrategy();
store.setCompactionStrategy(compactionStrategy);
+ CacheStats stringCacheStats = store.getTracker().getStringCacheStats();
+ if (stringCacheStats != null) {
+ stringCacheMBean = registerMBean(whiteboard, CacheStatsMBean.class,
+ stringCacheStats,
+ CacheStats.TYPE, stringCacheStats.getName());
+ }
+
FileStoreGCMonitor fsgcMonitor = new FileStoreGCMonitor(Clock.SIMPLE);
fsgcMonitorMBean = new CompositeRegistration(
whiteboard.register(GCMonitor.class, fsgcMonitor, emptyMap()),
@@ -490,6 +500,10 @@ public class SegmentNodeStoreService ext
}
private void unregisterNodeStore() {
+ if (stringCacheMBean != null) {
+ stringCacheMBean.unregister();
+ stringCacheMBean = null;
+ }
if(providerRegistration != null){
providerRegistration.unregister();
providerRegistration = null;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java?rev=1691218&r1=1691217&r2=1691218&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java Wed Jul 15 13:58:54 2015
@@ -27,8 +27,10 @@ import java.util.Queue;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import org.apache.jackrabbit.oak.cache.CacheStats;
import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
import org.slf4j.Logger;
@@ -133,6 +135,13 @@ public class SegmentTracker {
this(store, DEFAULT_MEMORY_CACHE_SIZE, SegmentVersion.V_11);
}
+ @CheckForNull
+ public CacheStats getStringCacheStats() {
+ return stringCache == null
+ ? null
+ : stringCache.getStats();
+ }
+
public SegmentWriter getWriter() {
return writer;
}
@@ -151,10 +160,10 @@ public class SegmentTracker {
}
currentSize = 0;
}
-
+
/**
* Get the string cache, if there is one.
- *
+ *
* @return the string cache or {@code null} if none is configured
*/
StringCache getStringCache() {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java?rev=1691218&r1=1691217&r2=1691218&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java Wed Jul 15 13:58:54 2015
@@ -21,8 +21,11 @@ package org.apache.jackrabbit.oak.plugin
import java.util.Arrays;
+import javax.annotation.Nonnull;
+
import com.google.common.base.Function;
import org.apache.jackrabbit.oak.cache.CacheLIRS;
+import org.apache.jackrabbit.oak.cache.CacheStats;
/**
* A string cache. It has two components: a fast cache for small strings, based
@@ -47,9 +50,14 @@ public class StringCache {
*/
StringCache(int maxSize) {
cache = CacheLIRS.<StringCacheEntry, String>newBuilder()
- .maximumSize(maxSize)
- .averageWeight(100)
- .build();
+ .maximumSize(maxSize)
+ .averageWeight(100)
+ .build();
+ }
+
+ @Nonnull
+ public CacheStats getStats() {
+ return new CacheStats(cache, "String Cache", null, -1);
}
/**