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