You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2017/03/01 17:25:51 UTC

svn commit: r1784995 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/backup/impl/ main/java/org/apache/jackrabbit/oak/segment/ main/java/org/apache/jackrabbit/oak/segment/file/ main/java/org/apache/jackrabbit/oak/seg...

Author: mduerig
Date: Wed Mar  1 17:25:51 2017
New Revision: 1784995

URL: http://svn.apache.org/viewvc?rev=1784995&view=rev
Log:
OAK-3690: Decouple SegmentBufferWriter from SegmentStore
Remove new(Bulk|Data)SegmentId methods from SegmentStore and rely on the respective methods in the SegmentIdProvider instead

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/Segment.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/SegmentStore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.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/file/AbstractFileStore.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/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightsTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/MutableSegmentReferencesTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheStatsTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentIdFactoryTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/TestUtils.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -69,6 +69,7 @@ public class FileStoreBackupImpl impleme
             int gen = current.getRecordId().getSegmentId().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                     backup,
+                    backup.getSegmentIdProvider(),
                     backup.getTracker().getSegmentCounter(),
                     backup.getReader(),
                     "b",
@@ -77,6 +78,7 @@ public class FileStoreBackupImpl impleme
             SegmentWriter writer = new SegmentWriter(
                     backup,
                     backup.getReader(),
+                    backup.getSegmentIdProvider(),
                     backup.getBlobStore(),
                     new WriterCacheManager.Default(),
                     bufferWriter

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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -63,6 +63,7 @@ public class FileStoreRestoreImpl implem
             int gen = head.getRecordId().getSegmentId().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                     store,
+                    store.getSegmentIdProvider(),
                     store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     "r",
@@ -71,6 +72,7 @@ public class FileStoreRestoreImpl implem
             SegmentWriter writer = new SegmentWriter(
                     store,
                     store.getReader(),
+                    store.getSegmentIdProvider(),
                     store.getBlobStore(),
                     new WriterCacheManager.Default(),
                     bufferWriter

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java Wed Mar  1 17:25:51 2017
@@ -140,7 +140,7 @@ public class Segment {
     public static final int RECORD_NUMBER_COUNT_OFFSET = 18;
 
     @Nonnull
-    private final SegmentStore store;
+    private final SegmentIdProvider idProvider;
 
     @Nonnull
     private final SegmentReader reader;
@@ -179,11 +179,11 @@ public class Segment {
         return (address + boundary - 1) & ~(boundary - 1);
     }
 
-    public Segment(@Nonnull SegmentStore store,
+    public Segment(@Nonnull SegmentIdProvider idProvider,
                    @Nonnull SegmentReader reader,
                    @Nonnull final SegmentId id,
                    @Nonnull final ByteBuffer data) {
-        this.store = checkNotNull(store);
+        this.idProvider = checkNotNull(idProvider);
         this.reader = checkNotNull(reader);
         this.id = checkNotNull(id);
         this.data = checkNotNull(data);
@@ -272,7 +272,7 @@ public class Segment {
                             int position = refOffset + (reference - 1) * SEGMENT_REFERENCE_SIZE;
                             long msb = data.getLong(position);
                             long lsb = data.getLong(position + 8);
-                            id = store.newSegmentId(msb, lsb);
+                            id = idProvider.newSegmentId(msb, lsb);
                             refIds[reference - 1] = id;
                         }
                     }
@@ -298,16 +298,16 @@ public class Segment {
         };
     }
 
-    Segment(@Nonnull SegmentStore store,
+    Segment(@Nonnull SegmentIdProvider idProvider,
             @Nonnull SegmentReader reader,
             @Nonnull byte[] buffer,
             @Nonnull RecordNumbers recordNumbers,
             @Nonnull SegmentReferences segmentReferences,
             @Nonnull String info
     ) {
-        this.store = checkNotNull(store);
+        this.idProvider = checkNotNull(idProvider);
         this.reader = checkNotNull(reader);
-        this.id = store.newDataSegmentId();
+        this.id = idProvider.newDataSegmentId();
         this.info = checkNotNull(info);
         this.data = ByteBuffer.wrap(checkNotNull(buffer));
         this.version = SegmentVersion.fromByte(buffer[3]);

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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -108,6 +108,9 @@ public class SegmentBufferWriter impleme
     private final SegmentStore store;
 
     @Nonnull
+    private final SegmentIdProvider idProvider;
+
+    @Nonnull
     private final Supplier<Integer> segmentCounter;
 
     @Nonnull
@@ -150,11 +153,13 @@ public class SegmentBufferWriter impleme
     private boolean dirty;
 
     public SegmentBufferWriter(@Nonnull SegmentStore store,
+                               @Nonnull SegmentIdProvider idProvider,
                                @Nonnull Supplier<Integer> segmentCounter,
                                @Nonnull SegmentReader reader,
                                @CheckForNull String wid,
                                int generation) {
         this.store = checkNotNull(store);
+        this.idProvider = checkNotNull(idProvider);
         this.segmentCounter = checkNotNull(segmentCounter);
         this.reader = checkNotNull(reader);
         this.wid = (wid == null
@@ -211,7 +216,7 @@ public class SegmentBufferWriter impleme
             ",\"sno\":" + segmentCounter.get() +
             ",\"t\":" + currentTimeMillis() + "}";
         try {
-            segment = new Segment(store, reader, buffer, recordNumbers, segmentReferences, metaInfo);
+            segment = new Segment(idProvider, reader, buffer, recordNumbers, segmentReferences, metaInfo);
 
             statistics = new Statistics();
             statistics.id = segment.getSegmentId();

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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -192,6 +192,7 @@ public class SegmentBufferWriterPool imp
             if (writer == null) {
                 writer = new SegmentBufferWriter(
                         store,
+                        tracker,
                         tracker.getSegmentCounter(),
                         reader,
                         getWriterId(wid),
@@ -201,6 +202,7 @@ public class SegmentBufferWriterPool imp
                 disposed.add(writer);
                 writer = new SegmentBufferWriter(
                         store,
+                        tracker,
                         tracker.getSegmentCounter(),
                         reader,
                         getWriterId(wid),

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStore.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStore.java Wed Mar  1 17:25:51 2017
@@ -63,21 +63,4 @@ public interface SegmentStore {
      */
     @Nonnull
     SegmentId newSegmentId(long msb, long lsb);
-
-    /**
-     * Create a new {@link SegmentId} for a segment of type "bulk".
-     *
-     * @return A non-{@code null} instance of {@link SegmentId}.
-     */
-    @Nonnull
-    SegmentId newBulkSegmentId();
-
-    /**
-     * Create a new {@link SegmentId} for a segment of type "data".
-     *
-     * @return A non-{@code null} instance of {@link SegmentId}.
-     */
-    @Nonnull
-    SegmentId newDataSegmentId();
-
 }

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java Wed Mar  1 17:25:51 2017
@@ -96,6 +96,9 @@ public class SegmentWriter {
     @Nonnull
     private final SegmentReader reader;
 
+    @Nonnull
+    private final SegmentIdProvider idProvider;
+
     @CheckForNull
     private final BlobStore blobStore;
 
@@ -111,6 +114,7 @@ public class SegmentWriter {
      *
      * @param store      store to write to
      * @param reader     segment reader for the {@code store}
+     * @param idProvider segment id provider for the {@code store}
      * @param blobStore  the blog store or {@code null} for inlined blobs
      * @param cacheManager  cache manager instance for the de-duplication caches used by this writer
      * @param writeOperationHandler  handler for write operations.
@@ -118,12 +122,14 @@ public class SegmentWriter {
     public SegmentWriter(
             @Nonnull SegmentStore store,
             @Nonnull SegmentReader reader,
+            @Nonnull SegmentIdProvider idProvider,
             @Nullable BlobStore blobStore,
             @Nonnull WriterCacheManager cacheManager,
             @Nonnull WriteOperationHandler writeOperationHandler
     ) {
         this.store = checkNotNull(store);
         this.reader = checkNotNull(reader);
+        this.idProvider = checkNotNull(idProvider);
         this.blobStore = blobStore;
         this.cacheManager = checkNotNull(cacheManager);
         this.writeOperationHandler = checkNotNull(writeOperationHandler);
@@ -702,7 +708,7 @@ public class SegmentWriter {
 
             // write as many full bulk segments as possible
             while (pos + Segment.MAX_SEGMENT_SIZE <= data.length) {
-                SegmentId bulkId = store.newBulkSegmentId();
+                SegmentId bulkId = idProvider.newBulkSegmentId();
                 store.writeSegment(bulkId, data, pos, Segment.MAX_SEGMENT_SIZE);
                 for (int i = 0; i < Segment.MAX_SEGMENT_SIZE; i += BLOCK_SIZE) {
                     blockIds.add(new RecordId(bulkId, i));
@@ -837,7 +843,7 @@ public class SegmentWriter {
 
             // Write the data to bulk segments and collect the list of block ids
             while (n != 0) {
-                SegmentId bulkId = store.newBulkSegmentId();
+                SegmentId bulkId = idProvider.newBulkSegmentId();
                 LOG.debug("Writing bulk segment {} ({} bytes)", bulkId, n);
                 store.writeSegment(bulkId, data, 0, n);
 

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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -146,6 +146,7 @@ public final class SegmentWriterBuilder
         return new SegmentWriter(
                 checkNotNull(store),
                 store.getReader(),
+                store.getSegmentIdProvider(),
                 store.getBlobStore(),
                 cacheManager,
                 createWriter(store, pooled)
@@ -162,6 +163,7 @@ public final class SegmentWriterBuilder
         return new SegmentWriter(
                 checkNotNull(store),
                 store.getReader(),
+                store.getSegmentIdProvider(),
                 store.getBlobStore(),
                 cacheManager,
                 new WriteOperationHandler() {
@@ -186,6 +188,7 @@ public final class SegmentWriterBuilder
         return new SegmentWriter(
                 checkNotNull(store),
                 store.getReader(),
+                store.getSegmentIdProvider(),
                 store.getBlobStore(),
                 cacheManager,
                 createWriter(store, pooled)
@@ -205,6 +208,7 @@ public final class SegmentWriterBuilder
         } else {
             return new SegmentBufferWriter(
                     store,
+                    store.getSegmentIdProvider(),
                     store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     name,
@@ -226,6 +230,7 @@ public final class SegmentWriterBuilder
         } else {
             return new SegmentBufferWriter(
                     store,
+                    store.getSegmentIdProvider(),
                     store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     name,

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java Wed Mar  1 17:25:51 2017
@@ -44,6 +44,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentCache;
 import org.apache.jackrabbit.oak.segment.SegmentId;
 import org.apache.jackrabbit.oak.segment.SegmentIdFactory;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.segment.SegmentReader;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
@@ -223,6 +224,11 @@ public abstract class AbstractFileStore
         return segmentReader;
     }
 
+    @Nonnull
+    public SegmentIdProvider getSegmentIdProvider() {
+        return tracker;
+    }
+
     /**
      * @return the {@link Revisions} object bound to the current store.
      */
@@ -247,18 +253,6 @@ public abstract class AbstractFileStore
         return tracker.newSegmentId(msb, lsb);
     }
 
-    @Override
-    @Nonnull
-    public SegmentId newBulkSegmentId() {
-        return tracker.newBulkSegmentId();
-    }
-
-    @Override
-    @Nonnull
-    public SegmentId newDataSegmentId() {
-        return tracker.newDataSegmentId();
-    }
-
     /**
      * @return  the external BlobStore (if configured) with this store, {@code null} otherwise.
      */
@@ -274,7 +268,7 @@ public abstract class AbstractFileStore
         int generation = Segment.getGcGeneration(buffer, id);
         w.writeEntry(msb, lsb, data, 0, data.length, generation);
         if (SegmentId.isDataSegmentId(lsb)) {
-            Segment segment = new Segment(this, segmentReader, newSegmentId(msb, lsb), buffer);
+            Segment segment = new Segment(tracker, segmentReader, newSegmentId(msb, lsb), buffer);
             populateTarGraph(segment, w);
             populateTarBinaryReferences(segment, w);
         }

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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -530,7 +530,7 @@ public class FileStore extends AbstractF
                 public Segment call() throws Exception {
                     ByteBuffer buffer = FileStoreUtil.readEntry(readers, id);
                     if (buffer != null) {
-                        return new Segment(FileStore.this, segmentReader, id, buffer);
+                        return new Segment(tracker, segmentReader, id, buffer);
                     }
 
                     if (tarWriter != null) {
@@ -539,7 +539,7 @@ public class FileStore extends AbstractF
                             try {
                                 buffer = tarWriter.readEntry(id.getMostSignificantBits(), id.getLeastSignificantBits());
                                 if (buffer != null) {
-                                    return new Segment(FileStore.this, segmentReader, id, buffer);
+                                    return new Segment(tracker, segmentReader, id, buffer);
                                 }
                             } catch (IOException e) {
                                 log.warn("Failed to read from tar file {}", tarWriter, e);
@@ -556,7 +556,7 @@ public class FileStore extends AbstractF
 
                     buffer = FileStoreUtil.readEntry(readers, id);
                     if (buffer != null) {
-                        return new Segment(FileStore.this, segmentReader, id, buffer);
+                        return new Segment(tracker, segmentReader, id, buffer);
                     }
 
                     throw new SegmentNotFoundException(id);
@@ -596,7 +596,7 @@ public class FileStore extends AbstractF
                 data = ByteBuffer.wrap(buffer, offset, length);
             }
 
-            segment = new Segment(this, segmentReader, id, data);
+            segment = new Segment(tracker, segmentReader, id, data);
             generation = segment.getGcGeneration();
         }
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java Wed Mar  1 17:25:51 2017
@@ -173,7 +173,7 @@ public class ReadOnlyFileStore extends A
                     if (buffer == null) {
                         throw new SegmentNotFoundException(id);
                     }
-                    return new Segment(ReadOnlyFileStore.this, segmentReader, id, buffer);
+                    return new Segment(tracker, segmentReader, id, buffer);
                 }
             });
         } catch (ExecutionException e) {

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java Wed Mar  1 17:25:51 2017
@@ -22,6 +22,7 @@ import static org.apache.jackrabbit.oak.
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
 
 import javax.annotation.CheckForNull;
@@ -34,6 +35,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.Segment;
 import org.apache.jackrabbit.oak.segment.SegmentId;
 import org.apache.jackrabbit.oak.segment.SegmentIdFactory;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.segment.SegmentReader;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
@@ -97,6 +99,11 @@ public class MemoryStore implements Segm
     }
 
     @Nonnull
+    public SegmentIdProvider getSegmentIdProvider() {
+        return tracker;
+    }
+
+    @Nonnull
     public Revisions getRevisions() {
         return revisions;
     }
@@ -122,24 +129,12 @@ public class MemoryStore implements Segm
     }
 
     @Override
-    @Nonnull
-    public SegmentId newBulkSegmentId() {
-        return tracker.newBulkSegmentId();
-    }
-
-    @Override
-    @Nonnull
-    public SegmentId newDataSegmentId() {
-        return tracker.newDataSegmentId();
-    }
-
-    @Override
     public void writeSegment(
             SegmentId id, byte[] data, int offset, int length) throws IOException {
         ByteBuffer buffer = ByteBuffer.allocate(length);
         buffer.put(data, offset, length);
         buffer.rewind();
-        Segment segment = new Segment(this, segmentReader, id, buffer);
+        Segment segment = new Segment(tracker, segmentReader, id, buffer);
         if (segments.putIfAbsent(id, segment) != null) {
             throw new IOException("Segment override: " + id);
         }
@@ -158,4 +153,7 @@ public class MemoryStore implements Segm
         segments.keySet().retainAll(tracker.getReferencedSegmentIds());
     }
 
+    public Set<SegmentId> getReferencedSegmentIds() {
+        return tracker.getReferencedSegmentIds();
+    }
 }

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightsTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightsTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightsTest.java Wed Mar  1 17:25:51 2017
@@ -386,7 +386,7 @@ public class CacheWeightsTest {
 
         ByteBuffer data = ByteBuffer.wrap(buffer);
         SegmentId id = randomSegmentId(false);
-        Segment segment = new Segment(store, store.getReader(), id, data);
+        Segment segment = new Segment(store.getSegmentIdProvider(), store.getReader(), id, data);
 
         //
         // TODO check impact of MutableRecordNumbers overhead of 65k bytes

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/MutableSegmentReferencesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/MutableSegmentReferencesTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/MutableSegmentReferencesTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/MutableSegmentReferencesTest.java Wed Mar  1 17:25:51 2017
@@ -32,8 +32,8 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void referencesShouldBeGreaterThanZero() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId id = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId id = store.getSegmentIdProvider().newDataSegmentId();
 
         MutableSegmentReferences table = new MutableSegmentReferences();
         int reference = table.addOrReference(id);
@@ -42,9 +42,9 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void referencesShouldBeIncrementing() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId first = store.newDataSegmentId();
-        SegmentId second = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId first = store.getSegmentIdProvider().newDataSegmentId();
+        SegmentId second = store.getSegmentIdProvider().newDataSegmentId();
 
         MutableSegmentReferences table = new MutableSegmentReferences();
         int firstReference = table.addOrReference(first);
@@ -54,8 +54,8 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void shouldAddNewSegmentReference() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId id = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId id = store.getSegmentIdProvider().newDataSegmentId();
 
         MutableSegmentReferences table = new MutableSegmentReferences();
         int reference = table.addOrReference(id);
@@ -64,8 +64,8 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void shouldNotAddSameSegmentIdTwice() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId id = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId id = store.getSegmentIdProvider().newDataSegmentId();
 
         MutableSegmentReferences table = new MutableSegmentReferences();
         int first = table.addOrReference(id);
@@ -75,8 +75,8 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void shouldMaintainSize() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId id = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId id = store.getSegmentIdProvider().newDataSegmentId();
 
         MutableSegmentReferences table = new MutableSegmentReferences();
         assertEquals(0, table.size());
@@ -86,8 +86,8 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void shouldContainAddedSegment() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId id = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId id = store.getSegmentIdProvider().newDataSegmentId();
 
         MutableSegmentReferences table = new MutableSegmentReferences();
         assertFalse(table.contains(id));
@@ -97,9 +97,9 @@ public class MutableSegmentReferencesTes
 
     @Test
     public void shouldIterateInInsertionOrder() throws Exception {
-        SegmentStore store = new MemoryStore();
-        SegmentId first = store.newDataSegmentId();
-        SegmentId second = store.newDataSegmentId();
+        MemoryStore store = new MemoryStore();
+        SegmentId first = store.getSegmentIdProvider().newDataSegmentId();
+        SegmentId second = store.getSegmentIdProvider().newDataSegmentId();
         List<SegmentId> ids = newArrayList(first, second);
 
         MutableSegmentReferences table = new MutableSegmentReferences();

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheStatsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheStatsTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheStatsTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheStatsTest.java Wed Mar  1 17:25:51 2017
@@ -55,7 +55,7 @@ public class RecordCacheStatsTest {
     public RecordCacheStatsTest() throws IOException {}
 
     private RecordId newRecordId() {
-        return TestUtils.newRecordId(store, rnd);
+        return TestUtils.newRecordId(store.getSegmentIdProvider(), rnd);
     }
 
     @Before

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordCacheTest.java Wed Mar  1 17:25:51 2017
@@ -36,6 +36,7 @@ import org.junit.Test;
 public class RecordCacheTest {
     private final Random rnd = new Random();
     private final MemoryStore store = new MemoryStore();
+    private final SegmentIdProvider idProvider = store.getSegmentIdProvider();
 
     public RecordCacheTest() throws IOException {}
 
@@ -44,7 +45,7 @@ public class RecordCacheTest {
         RecordCache<String> cache = newRecordCache(0);
         assertNull(cache.get("any"));
 
-        cache.put("key", (newRecordId(store, rnd)));
+        cache.put("key", (newRecordId(idProvider, rnd)));
         assertNull(cache.get("key"));
     }
 
@@ -53,7 +54,7 @@ public class RecordCacheTest {
         RecordCache<String> cache = newRecordCache(10);
         assertNull(cache.get("any"));
 
-        RecordId value = newRecordId(store, rnd);
+        RecordId value = newRecordId(idProvider, rnd);
         cache.put("key", value);
         assertEquals(value, cache.get("key"));
     }
@@ -64,7 +65,7 @@ public class RecordCacheTest {
         Map<String, RecordId> keys = newLinkedHashMap();
         for (int k = 0; k < 10; k ++) {
             String key = "key-" + k;
-            RecordId value = newRecordId(store, rnd);
+            RecordId value = newRecordId(idProvider, rnd);
             keys.put(key, value);
             cache.put(key, value);
         }
@@ -74,7 +75,7 @@ public class RecordCacheTest {
                     entry.getValue(), cache.get(entry.getKey()));
         }
 
-        RecordId value = newRecordId(store, rnd);
+        RecordId value = newRecordId(idProvider, rnd);
         // This should invalidate "key-0", which is the least recently accessed key
         cache.put("key", value);
         keys.put("key", value);

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=1784995&r1=1784994&r2=1784995&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 Wed Mar  1 17:25:51 2017
@@ -152,7 +152,7 @@ public class RecordTest {
     public void testListWithLotsOfReferences() throws IOException { // OAK-1184
         List<RecordId> list = newArrayList();
         for (int i = 0; i < 1000; i++) {
-            list.add(new RecordId(store.newBulkSegmentId(), 0));
+            list.add(new RecordId(store.getSegmentIdProvider().newBulkSegmentId(), 0));
         }
         writer.writeList(list);
     }

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentIdFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentIdFactoryTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentIdFactoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentIdFactoryTest.java Wed Mar  1 17:25:51 2017
@@ -18,11 +18,10 @@
  */
 package org.apache.jackrabbit.oak.segment;
 
-import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
 import java.util.Set;
 
 import org.apache.jackrabbit.oak.segment.memory.MemoryStore;
@@ -30,20 +29,20 @@ import org.junit.Test;
 
 public class SegmentIdFactoryTest {
     private final MemoryStore store;
-    private final SegmentTracker tracker;
+    private final SegmentIdProvider idProvider;
 
     public SegmentIdFactoryTest() throws IOException {
         store = new MemoryStore();
-        tracker = store.getTracker();
+        idProvider = store.getSegmentIdProvider();
     }
 
     @Test
     public void segmentIdType() {
-        assertTrue(store.newDataSegmentId().isDataSegmentId());
-        assertTrue(store.newBulkSegmentId().isBulkSegmentId());
+        assertTrue(idProvider.newDataSegmentId().isDataSegmentId());
+        assertTrue(idProvider.newBulkSegmentId().isBulkSegmentId());
 
-        assertFalse(store.newDataSegmentId().isBulkSegmentId());
-        assertFalse(store.newBulkSegmentId().isDataSegmentId());
+        assertFalse(idProvider.newDataSegmentId().isBulkSegmentId());
+        assertFalse(idProvider.newBulkSegmentId().isDataSegmentId());
     }
 
     @Test
@@ -55,17 +54,17 @@ public class SegmentIdFactoryTest {
 
     @Test
     public void referencedSegmentIds() throws InterruptedException {
-        SegmentId a = store.newDataSegmentId();
-        SegmentId b = store.newBulkSegmentId();
-        SegmentId c = store.newDataSegmentId();
+        SegmentId a = idProvider.newDataSegmentId();
+        SegmentId b = idProvider.newBulkSegmentId();
+        SegmentId c = idProvider.newDataSegmentId();
 
-        Set<SegmentId> ids = tracker.getReferencedSegmentIds();
+        Set<SegmentId> ids = store.getReferencedSegmentIds();
         assertTrue(ids.contains(a));
         assertTrue(ids.contains(b));
         assertTrue(ids.contains(c));
 
         // the returned set is a snapshot in time, not continuously updated
-        assertFalse(ids.contains(store.newBulkSegmentId()));
+        assertFalse(ids.contains(idProvider.newBulkSegmentId()));
     }
 
     /**
@@ -73,10 +72,9 @@ public class SegmentIdFactoryTest {
      * weak for this to work reliably. But it's a good manual check for
      * the correct operation of the tracking of segment id references.
      */
-    // @Test
     public void garbageCollection() {
-        SegmentId a = store.newDataSegmentId();
-        SegmentId b = store.newBulkSegmentId();
+        SegmentId a = idProvider.newDataSegmentId();
+        SegmentId b = idProvider.newBulkSegmentId();
 
         // generate lots of garbage copies of an UUID to get the
         // garbage collector to reclaim also the original instance
@@ -87,7 +85,7 @@ public class SegmentIdFactoryTest {
         System.gc();
 
         // now the original UUID should no longer be present
-        Set<SegmentId> ids = tracker.getReferencedSegmentIds();
+        Set<SegmentId> ids = store.getReferencedSegmentIds();
         assertFalse(ids.contains(a));
         assertTrue(ids.contains(b));
     }

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java Wed Mar  1 17:25:51 2017
@@ -42,7 +42,6 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.jackrabbit.oak.api.Blob;
@@ -56,7 +55,6 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.memory.MemoryStore;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class SegmentParserTest {
@@ -381,7 +379,7 @@ public class SegmentParserTest {
 
     @Test
     public void emptyList() {
-        RecordId listId = newRecordId(store, new Random());
+        RecordId listId = newRecordId(store.getSegmentIdProvider(), new Random());
         ListInfo listInfo = new TestParser(store.getReader(), "emptyList").parseList(null, listId, 0);
         assertEquals(listId, listInfo.listId);
         assertEquals(0, listInfo.count);

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/TestUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/TestUtils.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/TestUtils.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/TestUtils.java Wed Mar  1 17:25:51 2017
@@ -32,8 +32,8 @@ import javax.annotation.Nonnull;
 public final class TestUtils {
     private TestUtils() {}
 
-    public static RecordId newRecordId(SegmentStore store, Random random) {
-        SegmentId id = store.newDataSegmentId();
+    public static RecordId newRecordId(SegmentIdProvider idProvider, Random random) {
+        SegmentId id = idProvider.newDataSegmentId();
         RecordId r = new RecordId(id, newValidOffset(random));
         return r;
     }
@@ -56,22 +56,22 @@ public final class TestUtils {
      * Create a random map of record ids.
      *
      * @param rnd
-     * @param store
+     * @param idProvider
      * @param segmentCount  number of segments
      * @param entriesPerSegment  number of records per segment
      * @return  map of record ids
      */
-    public static Map<RecordId, RecordId> randomRecordIdMap(Random rnd, SegmentStore store,
+    public static Map<RecordId, RecordId> randomRecordIdMap(Random rnd, SegmentIdProvider idProvider,
             int segmentCount, int entriesPerSegment) {
         Map<RecordId, RecordId> map = newHashMap();
         for (int i = 0; i < segmentCount; i++) {
-            SegmentId id = store.newDataSegmentId();
+            SegmentId id =idProvider.newDataSegmentId();
             int offset = MAX_SEGMENT_SIZE;
             for (int j = 0; j < entriesPerSegment; j++) {
                 offset = newValidOffset(rnd, (entriesPerSegment - j) << RECORD_ALIGN_BITS, offset);
                 RecordId before = new RecordId(id, offset);
                 RecordId after = new RecordId(
-                        store.newDataSegmentId(),
+                        idProvider.newDataSegmentId(),
                         newValidOffset(rnd, 0, MAX_SEGMENT_SIZE));
                 map.put(before, after);
             }

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java Wed Mar  1 17:25:51 2017
@@ -177,7 +177,7 @@ public class TarWriterTest {
                 this.name = name;
                 this.selfId = selfId;
                 this.data = data.array();
-                segment = new Segment(store, store.getReader(), selfId.getSegmentId(), data);
+                segment = new Segment(store.getSegmentIdProvider(), store.getReader(), selfId.getSegmentId(), data);
             }
 
             public void write(TarWriter tarWriter) throws IOException {

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java?rev=1784995&r1=1784994&r2=1784995&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java Wed Mar  1 17:25:51 2017
@@ -26,6 +26,7 @@ import com.google.common.hash.Hashing;
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.Segment;
 import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentReader;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 
@@ -41,12 +42,13 @@ public class StandbyTestUtils {
 
     public static Segment mockSegment(UUID uuid, byte[] buffer) {
         SegmentStore store = mock(SegmentStore.class);
+        SegmentIdProvider idProvider = mock(SegmentIdProvider.class);
         SegmentReader reader = mock(SegmentReader.class);
         long msb = uuid.getMostSignificantBits();
         long lsb = uuid.getLeastSignificantBits();
         SegmentId id = new SegmentId(store, msb, lsb);
         ByteBuffer data = ByteBuffer.wrap(buffer);
-        return new Segment(store, reader, id, data);
+        return new Segment(idProvider, reader, id, data);
     }
 
     public static long hash(byte[] data) {