Index: src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ActiveDeletedBlobCollectorMBean.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ActiveDeletedBlobCollectorMBean.java (revision 1850224) +++ src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ActiveDeletedBlobCollectorMBean.java (working copy) @@ -20,7 +20,6 @@ package org.apache.jackrabbit.oak.plugins.index.lucene; import javax.management.openmbean.CompositeData; -import java.util.Map; import org.jetbrains.annotations.NotNull; @@ -79,4 +78,12 @@ * would get marked for active deletion when active deletion is active. */ void flagActiveDeletionSafe(); + + /** + * Whether active deletion is disabled. + * + * @return true if disabled + */ + boolean isDisabled(); + } Index: src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ActiveDeletedBlobCollectorMBeanImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ActiveDeletedBlobCollectorMBeanImpl.java (revision 1850224) +++ src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ActiveDeletedBlobCollectorMBeanImpl.java (working copy) @@ -74,6 +74,8 @@ private final long MIN_BLOB_AGE_TO_ACTIVELY_DELETE = Long.getLong("oak.active.deletion.minAge", TimeUnit.HOURS.toSeconds(24)); + private final boolean ACTIVE_DELETION_DISABLED = Boolean.getBoolean("oak.active.deletion.disabled"); + Clock clock = Clock.SIMPLE; // package private for tests @NotNull @@ -128,9 +130,17 @@ LOG.info("Active blob collector initialized with minAge: {}", MIN_BLOB_AGE_TO_ACTIVELY_DELETE); } + @Override + public boolean isDisabled() { + return ACTIVE_DELETION_DISABLED; + } + @NotNull @Override public CompositeData startActiveCollection() { + if (isDisabled()) { + return ManagementOperation.Status.none(gcOp, "Active deletion is disabled").toCompositeData(); + } if (gcOp.isDone()) { long safeTimestampForDeletedBlobs = getSafeTimestampForDeletedBlobs(); if (safeTimestampForDeletedBlobs == -1) {