Index: oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (date 1461752307000) +++ oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (revision ) @@ -294,9 +294,6 @@ return getSegmentId(msb, lsb); } - // FIXME OAK-4285: Align cleanup of segment id tables with the new cleanup strategy - // ith clean brutal we need to remove those ids that have been cleaned - // i.e. those whose segment was from an old generation public synchronized void clearSegmentIdTables(Predicate canRemove) { for (SegmentIdTable table : tables) { table.clearSegmentIdTables(canRemove); Index: oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (date 1461752307000) +++ oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (revision ) @@ -62,7 +62,7 @@ import javax.annotation.Nonnull; -import com.google.common.base.Predicates; +import com.google.common.base.Predicate; import com.google.common.base.Stopwatch; import com.google.common.base.Supplier; import org.apache.jackrabbit.oak.api.Blob; @@ -899,7 +899,7 @@ // FIXME OAK-4282: Make the number of retained gc generation configurable int generation = getGcGen() - 1; - Set reclaim = newHashSet(); + final Set reclaim = newHashSet(); for (TarReader reader : cleaned.keySet()) { reader.mark(bulkRefs, reclaim, generation); // FIXME OAK-4165: Too verbose logging during revision gc @@ -909,6 +909,13 @@ break; } } + tracker.clearSegmentIdTables(new Predicate() { + @Override + public boolean apply(SegmentId id) { + return reclaim.contains(id.asUUID()); + } + }); + for (TarReader reader : cleaned.keySet()) { cleaned.put(reader, reader.sweep(reclaim)); if (shutdown) { @@ -1107,10 +1114,6 @@ } if (success) { tracker.getWriter().addCachedNodes(gcGeneration, nodeCache); - // FIXME OAK-4285: Align cleanup of segment id tables with the new cleanup strategy - // ith clean brutal we need to remove those ids that have been cleaned - // i.e. those whose segment was from an old generation - tracker.clearSegmentIdTables(Predicates.alwaysFalse()); // FIXME OAK-4283: Align GCMonitor API with implementation // Refactor GCMonitor: there is no more compaction map stats gcMonitor.compacted(new long[]{}, new long[]{}, new long[]{});