Author: mduerig
Date: Thu Mar 20 13:04:18 2014
New Revision: 1579618

URL: http://svn.apache.org/r1579618
Log:
OAK-1559: Expose BlobGCMBean for supported NodeStores
BlobGC for SegmentNodeStoreService

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java?rev=1579618&r1=1579617&r2=1579618&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java
 Thu Mar 20 13:04:18 2014
@@ -28,6 +28,7 @@ import javax.annotation.Nonnull;
  * @see org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean
  */
 public interface BlobGCMBean {
+    String TYPE = "BlobGarbageCollection";
 
     /**
      * Initiate a data store garbage collection operation

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=1579618&r1=1579617&r2=1579618&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
 Thu Mar 20 13:04:18 2014
@@ -36,8 +36,12 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.jackrabbit.oak.osgi.ObserverTracker;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
+import org.apache.jackrabbit.oak.plugins.blob.BlobGC;
+import org.apache.jackrabbit.oak.plugins.blob.BlobGCMBean;
+import org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector;
 import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
+import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
 import org.apache.jackrabbit.oak.spi.commit.Observable;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -93,7 +97,8 @@ public class SegmentNodeStoreService ext
     private volatile BlobStore blobStore;
 
     private ServiceRegistration registration;
-    private Registration mBeanRegistration;
+    private Registration revisionGCRegistration;
+    private Registration blobGCRegistration;
     private WhiteboardExecutor executor;
 
     @Override
@@ -165,9 +170,16 @@ public class SegmentNodeStoreService ext
                 store.gc();
             }
         }, executor);
-        mBeanRegistration = registerMBean(whiteboard, RevisionGCMBean.class, 
revisionGC,
+        revisionGCRegistration = registerMBean(whiteboard, 
RevisionGCMBean.class, revisionGC,
                 RevisionGCMBean.TYPE, "Segment node store revision garbage 
collection");
 
+        if (blobStore instanceof GarbageCollectableBlobStore) {
+            MarkSweepGarbageCollector gc = new MarkSweepGarbageCollector();
+//            gc.init(delegate);  FIXME OAK-1582 ClassCastException in 
MarkSweepGarbageCollector#init()
+            blobGCRegistration = registerMBean(whiteboard, BlobGCMBean.class, 
new BlobGC(gc, executor),
+                    BlobGCMBean.TYPE, "Segment node store blob garbage 
collection");
+        }
+
         log.info("SegmentNodeStore initialized");
     }
 
@@ -208,9 +220,13 @@ public class SegmentNodeStoreService ext
             registration.unregister();
             registration = null;
         }
-        if (mBeanRegistration != null) {
-            mBeanRegistration.unregister();
-            mBeanRegistration = null;
+        if (revisionGCRegistration != null) {
+            revisionGCRegistration.unregister();
+            revisionGCRegistration = null;
+        }
+        if (blobGCRegistration != null) {
+            blobGCRegistration.unregister();
+            blobGCRegistration = null;
         }
         if (executor != null) {
             executor.stop();


Reply via email to