Author: mduerig
Date: Thu Mar 20 13:04:03 2014
New Revision: 1579616
URL: http://svn.apache.org/r1579616
Log:
OAK-1558: Expose FileStoreBackupRestoreMBean for supported NodeStores
RevisionGC for SegmentNodeStoreService
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/spi/state/RevisionGCMBean.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=1579616&r1=1579615&r2=1579616&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:03 2014
@@ -16,6 +16,9 @@
*/
package org.apache.jackrabbit.oak.plugins.segment;
+import static com.google.common.base.Preconditions.checkState;
+import static
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
+
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
@@ -32,20 +35,23 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ReferenceCardinality;
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.segment.file.FileStore;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.commit.Observable;
import org.apache.jackrabbit.oak.spi.commit.Observer;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.spi.state.ProxyNodeStore;
+import org.apache.jackrabbit.oak.spi.state.RevisionGC;
+import org.apache.jackrabbit.oak.spi.state.RevisionGCMBean;
+import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardExecutor;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static com.google.common.base.Preconditions.checkState;
-
@Component(policy = ConfigurationPolicy.REQUIRE)
public class SegmentNodeStoreService extends ProxyNodeStore
implements Observable {
@@ -87,6 +93,8 @@ public class SegmentNodeStoreService ext
private volatile BlobStore blobStore;
private ServiceRegistration registration;
+ private Registration mBeanRegistration;
+ private WhiteboardExecutor executor;
@Override
protected synchronized SegmentNodeStore getNodeStore() {
@@ -146,6 +154,20 @@ public class SegmentNodeStoreService ext
Dictionary<String, String> props = new Hashtable<String, String>();
props.put(Constants.SERVICE_PID, SegmentNodeStore.class.getName());
registration =
context.getBundleContext().registerService(NodeStore.class.getName(), this,
props);
+
+ OsgiWhiteboard whiteboard = new
OsgiWhiteboard(context.getBundleContext());
+ executor = new WhiteboardExecutor();
+ executor.start(whiteboard);
+
+ RevisionGC revisionGC = new RevisionGC(new Runnable() {
+ @Override
+ public void run() {
+ store.gc();
+ }
+ }, executor);
+ mBeanRegistration = registerMBean(whiteboard, RevisionGCMBean.class,
revisionGC,
+ RevisionGCMBean.TYPE, "Segment node store revision garbage
collection");
+
log.info("SegmentNodeStore initialized");
}
@@ -186,6 +208,14 @@ public class SegmentNodeStoreService ext
registration.unregister();
registration = null;
}
+ if (mBeanRegistration != null) {
+ mBeanRegistration.unregister();
+ mBeanRegistration = null;
+ }
+ if (executor != null) {
+ executor.stop();
+ executor = null;
+ }
}
/**
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/RevisionGCMBean.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/RevisionGCMBean.java?rev=1579616&r1=1579615&r2=1579616&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/RevisionGCMBean.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/RevisionGCMBean.java
Thu Mar 20 13:04:03 2014
@@ -28,6 +28,7 @@ import javax.annotation.Nonnull;
* @see org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean
*/
public interface RevisionGCMBean {
+ String TYPE = "RevisionGarbageCollection";
/**
* Initiate a revision garbage collection operation