Author: mduerig Date: Mon Oct 24 16:22:02 2016 New Revision: 1766430 URL: http://svn.apache.org/viewvc?rev=1766430&view=rev Log: OAK-4990: SegmentBufferWriter should not depend on SegmentTracker Replace dependency on SegmentTracker with a supplier for the segment number
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.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/FileStore.java jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java Mon Oct 24 16:22:02 2016 @@ -69,7 +69,7 @@ public class FileStoreBackupImpl impleme int gen = current.getRecordId().getSegmentId().getGcGeneration(); SegmentBufferWriter bufferWriter = new SegmentBufferWriter( backup, - backup.getTracker(), + backup.getTracker().getSegmentCounter(), backup.getReader(), "b", gen Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java Mon Oct 24 16:22:02 2016 @@ -63,7 +63,7 @@ public class FileStoreRestoreImpl implem int gen = head.getRecordId().getSegmentId().getGcGeneration(); SegmentBufferWriter bufferWriter = new SegmentBufferWriter( store, - store.getTracker(), + store.getTracker().getSegmentCounter(), store.getReader(), "r", gen Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java Mon Oct 24 16:22:02 2016 @@ -43,6 +43,7 @@ import java.util.Set; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; +import com.google.common.base.Supplier; import org.apache.jackrabbit.oak.segment.RecordNumbers.Entry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -115,7 +116,7 @@ public class SegmentBufferWriter impleme private final SegmentStore store; @Nonnull - private final SegmentTracker tracker; + private final Supplier<Integer> segmentCounter; @Nonnull private final SegmentReader reader; @@ -157,12 +158,12 @@ public class SegmentBufferWriter impleme private boolean dirty; public SegmentBufferWriter(@Nonnull SegmentStore store, - @Nonnull SegmentTracker tracker, + @Nonnull Supplier<Integer> segmentCounter, @Nonnull SegmentReader reader, @CheckForNull String wid, int generation) { this.store = checkNotNull(store); - this.tracker = checkNotNull(tracker); + this.segmentCounter = checkNotNull(segmentCounter); this.reader = checkNotNull(reader); this.wid = (wid == null ? "w-" + identityHashCode(this) @@ -214,7 +215,7 @@ public class SegmentBufferWriter impleme String metaInfo = "{\"wid\":\"" + wid + '"' + - ",\"sno\":" + tracker.getSegmentCount() + + ",\"sno\":" + segmentCounter.get() + ",\"t\":" + currentTimeMillis() + "}"; try { segment = new Segment(store, reader, buffer, recordNumbers, segmentReferences, metaInfo); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java Mon Oct 24 16:22:02 2016 @@ -191,7 +191,7 @@ public class SegmentBufferWriterPool imp if (writer == null) { writer = new SegmentBufferWriter( store, - tracker, + tracker.getSegmentCounter(), reader, getWriterId(wid), gcGeneration.get() @@ -200,7 +200,7 @@ public class SegmentBufferWriterPool imp disposed.add(writer); writer = new SegmentBufferWriter( store, - tracker, + tracker.getSegmentCounter(), reader, getWriterId(wid), gcGeneration.get() Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Mon Oct 24 16:22:02 2016 @@ -27,6 +27,8 @@ import java.util.concurrent.atomic.Atomi import javax.annotation.Nonnull; +import com.google.common.base.Supplier; + /** * Tracker of references to segment identifiers and segment instances * that are currently kept in memory and factory for creating {@link SegmentId} @@ -77,8 +79,13 @@ public class SegmentTracker { * Number of segment tracked since this tracker was instantiated * @return count */ - int getSegmentCount() { - return segmentCounter.get(); + public Supplier<Integer> getSegmentCounter() { + return new Supplier<Integer>() { + @Override + public Integer get() { + return segmentCounter.get(); + } + }; } /** Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java Mon Oct 24 16:22:02 2016 @@ -193,7 +193,7 @@ public final class SegmentWriterBuilder } else { return new SegmentBufferWriter( store, - store.getTracker(), + store.getTracker().getSegmentCounter(), store.getReader(), name, generation.get() @@ -214,7 +214,7 @@ public final class SegmentWriterBuilder } else { return new SegmentBufferWriter( store, - store.getTracker(), + store.getTracker().getSegmentCounter(), store.getReader(), name, generation.get() @@ -235,7 +235,7 @@ public final class SegmentWriterBuilder } else { return new SegmentBufferWriter( store, - store.getTracker(), + store.getTracker().getSegmentCounter(), store.getReader(), name, generation.get() 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=1766430&r1=1766429&r2=1766430&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 24 16:22:02 2016 @@ -21,8 +21,6 @@ package org.apache.jackrabbit.oak.segmen import static com.google.common.base.Preconditions.checkNotNull; -import java.io.IOException; - import javax.annotation.CheckForNull; import javax.annotation.Nonnull; Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java Mon Oct 24 16:22:02 2016 @@ -838,7 +838,8 @@ public class FileStore extends AbstractF SegmentNodeState before = getHead(); final int newGeneration = getGcGeneration() + 1; - SegmentBufferWriter bufferWriter = new SegmentBufferWriter(FileStore.this, tracker, segmentReader, "c", newGeneration); + SegmentBufferWriter bufferWriter = new SegmentBufferWriter( + FileStore.this, tracker.getSegmentCounter(), segmentReader, "c", newGeneration); Supplier<Boolean> cancel = new CancelCompactionSupplier(FileStore.this); SegmentNodeState after = compact(bufferWriter, before, cancel); if (after == null) { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java?rev=1766430&r1=1766429&r2=1766430&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java Mon Oct 24 16:22:02 2016 @@ -436,7 +436,7 @@ public class RecordTest { NodeBuilder builder = EMPTY_NODE.builder(); SegmentBufferWriter bufferWriter = new SegmentBufferWriter( store, - store.getTracker(), + store.getTracker().getSegmentCounter(), store.getReader(), "test", 0