Index: oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java =================================================================== --- oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (revision 1746097) +++ oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (working copy) @@ -866,7 +866,8 @@ LinkedList toRemove = newLinkedList(); Set cleanedIds = newHashSet(); for (TarReader reader : cleaned.keySet()) { - cleaned.put(reader, reader.cleanup(referencedIds, cleanedIds)); + cleaned.put(reader, reader.cleanup(referencedIds, cleanedIds, + compactionStrategy)); if (shutdown) { gcMonitor.info("TarMK GC #{}: cleanup interrupted", gcCount); break; Index: oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java =================================================================== --- oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java (revision 1746097) +++ oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java (working copy) @@ -52,6 +52,7 @@ import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.oak.plugins.segment.SegmentGraph.SegmentGraphVisitor; +import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -749,7 +750,8 @@ * @return this (if the file is kept as is), or the new generation file, or * null if the file is fully garbage */ - synchronized TarReader cleanup(Set referencedIds, Set removed) throws IOException { + synchronized TarReader cleanup(Set referencedIds, Set removed, + CompactionStrategy strategy) throws IOException { String name = file.getName(); log.debug("Cleaning up {}", name); @@ -786,7 +788,8 @@ removed.addAll(cleaned); logCleanedSegments(cleaned); return null; - } else if (size >= access.length() * 3 / 4 && graph != null) { + } else if (size >= access.length() * 3 / 4 && graph != null + && !strategy.isOfflineCompaction()) { // the space savings are not worth it at less than 25%, // unless this tar file lacks a pre-compiled segment graph // in which case we'll always generate a new tar file with