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 2016/10/10 15:10:14 UTC
svn commit: r1764117 - in /jackrabbit/oak/trunk/oak-segment-tar/src:
main/java/org/apache/jackrabbit/oak/segment/
main/java/org/apache/jackrabbit/oak/segment/compaction/
main/java/org/apache/jackrabbit/oak/segment/file/
test/java/org/apache/jackrabbit/...
Author: mduerig
Date: Mon Oct 10 15:10:14 2016
New Revision: 1764117
URL: http://svn.apache.org/viewvc?rev=1764117&view=rev
Log:
OAK-4617: Align SegmentRevisionGC MBean with new generation based GC
Remove GCMonitorMBean and expose its endpoints through the SegmentRevisionGCMBean
Removed:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCMonitorMBean.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.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=1764117&r1=1764116&r2=1764117&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 Mon Oct 10 15:10:14 2016
@@ -77,7 +77,6 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
import org.apache.jackrabbit.oak.segment.file.FileStoreGCMonitor;
import org.apache.jackrabbit.oak.segment.file.FileStoreStatsMBean;
-import org.apache.jackrabbit.oak.segment.file.GCMonitorMBean;
import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
@@ -392,16 +391,6 @@ public class SegmentNodeStoreService ext
return false;
}
- // Expose an MBean to provide information about the gc options
-
- registrations.add(registerMBean(
- whiteboard,
- SegmentRevisionGC.class,
- new SegmentRevisionGCMBean(store, gcOptions),
- SegmentRevisionGC.TYPE,
- "Segment node store gc options"
- ));
-
// Expose stats about the segment cache
CacheStatsMBean segmentCacheStats = store.getSegmentCacheStats();
@@ -463,14 +452,25 @@ public class SegmentNodeStoreService ext
executor = new WhiteboardExecutor();
executor.start(whiteboard);
- // Expose an MBean to trigger garbage collection
+ // Expose an MBean to managing and monitoring garbage collection
+
+ FileStoreGCMonitor fsgcm = new FileStoreGCMonitor(Clock.SIMPLE);
+ registrations.add(new CompositeRegistration(
+ whiteboard.register(GCMonitor.class, fsgcm, emptyMap()),
+ registerMBean(
+ whiteboard,
+ SegmentRevisionGC.class,
+ new SegmentRevisionGCMBean(store, gcOptions, fsgcm),
+ SegmentRevisionGC.TYPE,
+ "Segment node store revision garbage collection"
+ )));
registrations.add(registerMBean(
whiteboard,
RevisionGCMBean.class,
new RevisionGC(store.getGCRunner(), executor),
RevisionGCMBean.TYPE,
- "Segment node store revision garbage collection"
+ "Revision garbage collection"
));
// Expose statistics about the FileStore
@@ -483,21 +483,6 @@ public class SegmentNodeStoreService ext
"FileStore statistics"
));
- // Register a monitor for the garbage collection of the FileStore
-
- FileStoreGCMonitor fsgcm = new FileStoreGCMonitor(Clock.SIMPLE);
-
- registrations.add((new CompositeRegistration(
- whiteboard.register(GCMonitor.class, fsgcm, emptyMap()),
- registerMBean(
- whiteboard,
- GCMonitorMBean.class,
- fsgcm,
- GCMonitorMBean.TYPE,
- "File Store garbage collection monitor"
- )
- )));
-
// Register a factory service to expose the FileStore
providerRegistration = context.getBundleContext().registerService(SegmentStoreProvider.class.getName(), this, null);
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java?rev=1764117&r1=1764116&r2=1764117&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java Mon Oct 10 15:10:14 2016
@@ -19,8 +19,14 @@
package org.apache.jackrabbit.oak.segment.compaction;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
+
/**
- * This MBean exposes the settings from {@link SegmentGCOptions}.
+ * This MBean exposes the settings from {@link SegmentGCOptions} and
+ * reflects the GC status as reported by the {@link GCMonitor}.
*/
public interface SegmentRevisionGC {
String TYPE = "SegmentRevisionGarbageCollection";
@@ -111,4 +117,39 @@ public interface SegmentRevisionGC {
* if revision garbage collection is not running.
*/
void cancelRevisionGC();
+
+ /**
+ * @return timestamp of the last compaction or {@code null} if none.
+ */
+ @CheckForNull
+ String getLastCompaction();
+
+ /**
+ * @return timestamp of the last cleanup or {@code null} if none.
+ */
+ @CheckForNull
+ String getLastCleanup();
+
+ /**
+ * @return repository size after the last cleanup.
+ */
+ long getLastRepositorySize();
+
+ /**
+ * @return reclaimed size during the last cleanup.
+ */
+ long getLastReclaimedSize();
+
+ /**
+ * @return last error or {@code null} if none.
+ */
+ @CheckForNull
+ String getLastError();
+
+ /**
+ * @return current status.
+ */
+ @Nonnull
+ String getStatus();
+
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java?rev=1764117&r1=1764116&r2=1764117&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java Mon Oct 10 15:10:14 2016
@@ -23,10 +23,12 @@ import static com.google.common.base.Pre
import java.io.IOException;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStoreGCMonitor;
// FIXME OAK-4617: Align SegmentRevisionGC MBean with new generation based GC
public class SegmentRevisionGCMBean
@@ -39,12 +41,21 @@ public class SegmentRevisionGCMBean
@Nonnull
private final SegmentGCOptions gcOptions;
- public SegmentRevisionGCMBean(@Nonnull FileStore fileStore, @Nonnull SegmentGCOptions gcOptions) {
+ @Nonnull
+ private final FileStoreGCMonitor fileStoreGCMonitor;
+
+ public SegmentRevisionGCMBean(
+ @Nonnull FileStore fileStore,
+ @Nonnull SegmentGCOptions gcOptions,
+ @Nonnull FileStoreGCMonitor fileStoreGCMonitor) {
super(SegmentRevisionGC.class);
this.fileStore = checkNotNull(fileStore);
this.gcOptions = checkNotNull(gcOptions);
+ this.fileStoreGCMonitor = checkNotNull(fileStoreGCMonitor);
}
+ //------------------------------------------------------------< SegmentRevisionGC >---
+
@Override
public boolean isPausedCompaction() {
return gcOptions.isPaused();
@@ -115,4 +126,37 @@ public class SegmentRevisionGCMBean
fileStore.cancelGC();
}
+ @CheckForNull
+ @Override
+ public String getLastCompaction() {
+ return fileStoreGCMonitor.getLastCompaction();
+ }
+
+ @CheckForNull
+ @Override
+ public String getLastCleanup() {
+ return fileStoreGCMonitor.getLastCleanup();
+ }
+
+ @Override
+ public long getLastRepositorySize() {
+ return fileStoreGCMonitor.getLastReclaimedSize();
+ }
+
+ @Override
+ public long getLastReclaimedSize() {
+ return fileStoreGCMonitor.getLastReclaimedSize();
+ }
+
+ @CheckForNull
+ @Override
+ public String getLastError() {
+ return fileStoreGCMonitor.getLastError();
+ }
+
+ @Nonnull
+ @Override
+ public String getStatus() {
+ return fileStoreGCMonitor.getStatus();
+ }
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java?rev=1764117&r1=1764116&r2=1764117&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java Mon Oct 10 15:10:14 2016
@@ -29,17 +29,13 @@ import java.util.Date;
import javax.annotation.Nonnull;
-import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
import org.apache.jackrabbit.oak.stats.Clock;
/**
- * {@link GCMonitor} implementation providing the file store gc status
- * as {@link GCMonitorMBean}.
- *
+ * {@link GCMonitor} implementation providing the file store gc status.
*/
-public class FileStoreGCMonitor extends AnnotatedStandardMBean
- implements GCMonitor, GCMonitorMBean {
+public class FileStoreGCMonitor implements GCMonitor {
private final Clock clock;
private long lastCompaction;
@@ -50,7 +46,6 @@ public class FileStoreGCMonitor extends
private String status = "NA";
public FileStoreGCMonitor(@Nonnull Clock clock) {
- super(GCMonitorMBean.class);
this.clock = checkNotNull(clock);
}
@@ -91,24 +86,18 @@ public class FileStoreGCMonitor extends
lastRepositorySize = current;
}
- //------------------------------------------------------------< GCMonitorMBean >---
-
- @Override
public String getLastCompaction() {
return toString(lastCompaction);
}
- @Override
public String getLastCleanup() {
return toString(lastCleanup);
}
- @Override
public long getLastRepositorySize() {
return lastRepositorySize;
}
- @Override
public long getLastReclaimedSize() {
return lastReclaimedSize;
}
@@ -121,13 +110,11 @@ public class FileStoreGCMonitor extends
}
}
- @Override
public String getLastError() {
return lastError;
}
@Nonnull
- @Override
public String getStatus() {
return status;
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java?rev=1764117&r1=1764116&r2=1764117&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java Mon Oct 10 15:10:14 2016
@@ -82,7 +82,6 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.compaction.SegmentRevisionGCMBean;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStoreGCMonitor;
-import org.apache.jackrabbit.oak.segment.file.GCMonitorMBean;
import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
@@ -109,7 +108,6 @@ import org.slf4j.LoggerFactory;
* All of which can be interactively modified through the accompanying
* {@link SegmentCompactionITMBean}, the
* {@link SegmentRevisionGC} and the
- * {@link GCMonitorMBean}.</p>
*
*<p>The test is <b>disabled</b> by default, to run it you need to set the {@code SegmentCompactionIT} system property:<br>
* {@code mvn test -Dtest=SegmentCompactionIT -Dtest.opts.memory=-Xmx4G}
@@ -236,10 +234,8 @@ public class SegmentCompactionIT {
List<Registration> registrations = newArrayList();
registrations.add(registerMBean(segmentCompactionMBean,
new ObjectName("IT:TYPE=Segment Compaction")));
- registrations.add(registerMBean(new SegmentRevisionGCMBean(fileStore, gcOptions),
+ registrations.add(registerMBean(new SegmentRevisionGCMBean(fileStore, gcOptions, fileStoreGCMonitor),
new ObjectName("IT:TYPE=Segment Revision GC")));
- registrations.add(registerMBean(fileStoreGCMonitor,
- new ObjectName("IT:TYPE=GC Monitor")));
CacheStatsMBean segmentCacheStats = fileStore.getSegmentCacheStats();
registrations.add(registerMBean(segmentCacheStats,
new ObjectName("IT:TYPE=" + segmentCacheStats.getName())));