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 fr...@apache.org on 2016/12/20 13:42:53 UTC

svn commit: r1775288 - /jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java

Author: frm
Date: Tue Dec 20 13:42:53 2016
New Revision: 1775288

URL: http://svn.apache.org/viewvc?rev=1775288&view=rev
Log:
OAK-5351 - Expose GC monitoring and maintenance operations only for primary stores

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java?rev=1775288&r1=1775287&r2=1775288&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java Tue Dec 20 13:42:53 2016
@@ -415,9 +415,14 @@ public class SegmentNodeStoreService {
         Registrations registrations = new Registrations(whiteboard, role);
 
         // Listen for GCMonitor services
-        GCMonitorTracker gcMonitor = new GCMonitorTracker();
-        gcMonitor.start(whiteboard);
-        closeables.add(gcMonitor);
+        GCMonitor gcMonitor = GCMonitor.EMPTY;
+
+        if (configuration.isPrimarySegmentStore()) {
+            GCMonitorTracker tracker = new GCMonitorTracker();
+            tracker.start(whiteboard);
+            closeables.add(tracker);
+            gcMonitor = tracker;
+        }
 
         // Create the gc options
         if (configuration.getCompactionGainThreshold() != null) {
@@ -531,35 +536,41 @@ public class SegmentNodeStoreService {
 
         // Expose an MBean to managing and monitoring garbage collection
 
-        final FileStoreGCMonitor fsgcm = new FileStoreGCMonitor(Clock.SIMPLE);
-        closeables.add(registrations.register(GCMonitor.class, fsgcm));
-        closeables.add(registrations.registerMBean(
-                SegmentRevisionGC.class,
-                new SegmentRevisionGCMBean(store, gcOptions, fsgcm),
-                SegmentRevisionGC.TYPE,
-                "Segment node store revision garbage collection"
-        ));
+        if (configuration.isPrimarySegmentStore()) {
+            final FileStoreGCMonitor monitor = new FileStoreGCMonitor(Clock.SIMPLE);
+            closeables.add(registrations.register(
+                    GCMonitor.class,
+                    monitor
+            ));
+            closeables.add(registrations.registerMBean(
+                    SegmentRevisionGC.class,
+                    new SegmentRevisionGCMBean(store, gcOptions, monitor),
+                    SegmentRevisionGC.TYPE,
+                    "Segment node store revision garbage collection"
+            ));
+            Runnable cancelGC = new Runnable() {
 
-        Runnable cancelGC = new Runnable() {
+                @Override
+                public void run() {
+                    store.cancelGC();
+                }
+
+            };
+            Supplier<String> statusMessage = new Supplier<String>() {
+
+                @Override
+                public String get() {
+                    return monitor.getStatus();
+                }
 
-            @Override
-            public void run() {
-                store.cancelGC();
-            }
-        };
-        Supplier<String> statusMessage = new Supplier<String>() {
-
-            @Override
-            public String get() {
-                return fsgcm.getStatus();
-            }
-        };
-        closeables.add(registrations.registerMBean(
-                RevisionGCMBean.class,
-                new RevisionGC(store.getGCRunner(), cancelGC, statusMessage, executor),
-                RevisionGCMBean.TYPE,
-                "Revision garbage collection"
-        ));
+            };
+            closeables.add(registrations.registerMBean(
+                    RevisionGCMBean.class,
+                    new RevisionGC(store.getGCRunner(), cancelGC, statusMessage, executor),
+                    RevisionGCMBean.TYPE,
+                    "Revision garbage collection"
+            ));
+        }
 
         // Expose statistics about the FileStore