Index: oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java (revision 1615896) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java (working copy) @@ -194,4 +194,12 @@ @Nonnull CompositeData getPropertyIndexAsyncReindexStatus(); + /** + * Initiate a data store garbage collection operation. + * + * @param markOnly whether to mark only + * @return the status of the operation right after it was initiated + */ + @Nonnull + CompositeData startDataStoreGC(boolean markOnly); } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/management/RepositoryManager.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/management/RepositoryManager.java (revision 1615896) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/management/RepositoryManager.java (working copy) @@ -123,17 +123,22 @@ } @Override - public CompositeData startDataStoreGC() { + public CompositeData startDataStoreGC(final boolean markOnly) { return execute(BlobGCMBean.class, new Function() { @Nonnull @Override public Status apply(BlobGCMBean blobGCService) { - return fromCompositeData(blobGCService.startBlobGC()); + return fromCompositeData(blobGCService.startBlobGC(markOnly)); } }).toCompositeData(); } @Override + public CompositeData startDataStoreGC() { + return startDataStoreGC(false); + } + + @Override public CompositeData getDataStoreGCStatus() { return execute(BlobGCMBean.class, new Function() { @Nonnull Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java (revision 1615896) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java (working copy) @@ -61,13 +61,13 @@ @Nonnull @Override - public CompositeData startBlobGC() { + public CompositeData startBlobGC(final boolean markOnly) { if (gcOp.isDone()) { gcOp = newManagementOperation(OP_NAME, new Callable() { @Override public String call() throws Exception { long t0 = nanoTime(); - blobGarbageCollector.collectGarbage(); + blobGarbageCollector.collectGarbage(markOnly); return "Blob gc completed in " + formatTime(nanoTime() - t0); } }); @@ -81,4 +81,10 @@ public CompositeData getBlobGCStatus() { return gcOp.getStatus().toCompositeData(); } + + @Override + @Nonnull + public CompositeData startBlobGC() { + return startBlobGC(false); + } } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java (revision 1615896) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean.java (working copy) @@ -48,4 +48,11 @@ @Nonnull CompositeData getBlobGCStatus(); + /** + * Initiate a data store garbage collection operation. + * + * @param markOnly whether to mark only + * @return the status of the operation right after it was initiated + */ + CompositeData startBlobGC(boolean markOnly); }