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:26:15 UTC

svn commit: r1784998 - in /jackrabbit/oak/trunk: oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ oak-segmen...

Author: mduerig
Date: Wed Mar  1 17:26:15 2017
New Revision: 1784998

URL: http://svn.apache.org/viewvc?rev=1784998&view=rev
Log:
OAK-3690: Decouple SegmentBufferWriter from SegmentStore
Replace SegmentStore.newSegmentId with SegmentIdProvider.newSegmentId and remove the former from SegmentStore

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordId.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.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/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/FileStoreUtil.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/file/ReadOnlyRevisions.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.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/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugSegments.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugStore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentIdFactoryTest.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java Wed Mar  1 17:26:15 2017
@@ -32,12 +32,11 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-
-import javax.annotation.Nullable;
-
 import java.util.Set;
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import com.google.common.base.Function;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
@@ -195,7 +194,7 @@ class SegmentTarExplorerBackend implemen
 
     @Override
     public NodeState readNodeState(String recordId) {
-        return store.getReader().readNode(RecordId.fromString(store, recordId));
+        return store.getReader().readNode(RecordId.fromString(store.getSegmentIdProvider(), recordId));
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordId.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordId.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordId.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordId.java Wed Mar  1 17:26:15 2017
@@ -42,11 +42,11 @@ public final class RecordId implements C
 
     public static RecordId[] EMPTY_ARRAY = new RecordId[0];
 
-    public static RecordId fromString(SegmentStore factory, String id) {
+    public static RecordId fromString(SegmentIdProvider idProvider, String id) {
         Matcher matcher = PATTERN.matcher(id);
         if (matcher.matches()) {
             UUID uuid = UUID.fromString(matcher.group(1));
-            SegmentId segmentId = factory.newSegmentId(
+            SegmentId segmentId = idProvider.newSegmentId(
                     uuid.getMostSignificantBits(),
                     uuid.getLeastSignificantBits());
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java Wed Mar  1 17:26:15 2017
@@ -163,13 +163,13 @@ public final class SegmentGraph {
             SegmentNodeState root = checkNotNull(fileStore).getHead();
             Predicate<UUID> filter = pattern == null
                 ? Predicates.<UUID>alwaysTrue()
-                : createRegExpFilter(pattern, fileStore);
+                : createRegExpFilter(pattern, fileStore.getSegmentIdProvider());
             Graph<UUID> segmentGraph = parseSegmentGraph(fileStore, filter);
             Graph<UUID> headGraph = parseHeadGraph(fileStore.getReader(), root.getRecordId());
 
             writer.write("nodedef>name VARCHAR, label VARCHAR, type VARCHAR, wid VARCHAR, gc INT, t INT, size INT, head BOOLEAN\n");
             for (UUID segment : segmentGraph.vertices()) {
-                writeNode(segment, writer, headGraph.containsVertex(segment), epoch, fileStore);
+                writeNode(segment, writer, headGraph.containsVertex(segment), epoch, fileStore.getSegmentIdProvider());
             }
 
             writer.write("edgedef>node1 VARCHAR, node2 VARCHAR, head BOOLEAN\n");
@@ -192,20 +192,19 @@ public final class SegmentGraph {
      * Create a regular expression based inclusion filter for segment.
      *
      * @param pattern       regular expression specifying inclusion of nodes.
-     * @param store       the segment store acting upon.
      * @return
      */
     public static Predicate<UUID> createRegExpFilter(
             @Nonnull String pattern,
-            @Nonnull final SegmentStore store) {
+            @Nonnull final SegmentIdProvider idProvider) {
         final Pattern regExp = compile(checkNotNull(pattern));
-        checkNotNull(store);
+        checkNotNull(idProvider);
 
         return new Predicate<UUID>() {
             @Override
             public boolean apply(UUID segment) {
                 try {
-                    String info = getSegmentInfo(segment, store);
+                    String info = getSegmentInfo(segment, idProvider);
                     if (info == null) {
                         info = "NULL";
                     }
@@ -290,7 +289,7 @@ public final class SegmentGraph {
         return parseSegmentGraph(fileStore, roots, Predicates.<UUID>alwaysTrue(), new Function<UUID, String>() {
             @Override @Nullable
             public String apply(UUID segmentId) {
-                Map<String, String> info = new SegmentInfo(segmentId, fileStore).getInfoMap();
+                Map<String, String> info = new SegmentInfo(segmentId, fileStore.getSegmentIdProvider()).getInfoMap();
                 String error = info.get("error");
                 if (error != null) {
                     return "Error";
@@ -446,8 +445,8 @@ public final class SegmentGraph {
         return graph;
     }
 
-    private static void writeNode(UUID node, PrintWriter writer, boolean inHead, Date epoch, SegmentStore store) {
-        SegmentInfo segmentInfo = new SegmentInfo(node, store);
+    private static void writeNode(UUID node, PrintWriter writer, boolean inHead, Date epoch, SegmentIdProvider idProvider) {
+        SegmentInfo segmentInfo = new SegmentInfo(node, idProvider);
         if (!segmentInfo.isData()) {
             writer.write(node + ",b,bulk,b,-1,-1," + inHead + "\n");
         } else {
@@ -491,21 +490,21 @@ public final class SegmentGraph {
         return Long.valueOf(string);
     }
 
-    private static String getSegmentInfo(UUID segment, SegmentStore store) {
-        return new SegmentInfo(segment, store).getInfo();
+    private static String getSegmentInfo(UUID segment, SegmentIdProvider idProvider) {
+        return new SegmentInfo(segment, idProvider).getInfo();
     }
 
     private static class SegmentInfo {
 
         private final UUID uuid;
 
-        private final SegmentStore store;
+        private final SegmentIdProvider idProvider;
 
         private SegmentId id;
 
-        SegmentInfo(UUID uuid, SegmentStore store) {
+        SegmentInfo(UUID uuid, SegmentIdProvider idProvider) {
             this.uuid = uuid;
-            this.store = store;
+            this.idProvider = idProvider;
         }
 
         boolean isData() {
@@ -516,7 +515,7 @@ public final class SegmentGraph {
             if (id == null) {
                 long msb = uuid.getMostSignificantBits();
                 long lsb = uuid.getLeastSignificantBits();
-                id = store.newSegmentId(msb, lsb);
+                id = idProvider.newSegmentId(msb, lsb);
             }
             return id;
         }

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=1784998&r1=1784997&r2=1784998&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:26:15 2017
@@ -53,14 +53,4 @@ public interface SegmentStore {
      * @param length length of the segment
      */
     void writeSegment(SegmentId id, byte[] bytes, int offset, int length) throws IOException;
-
-    /**
-     * Create a {@link SegmentId} represented by the given MSB/LSB pair.
-     *
-     * @param msb The most significant bits of the {@link SegmentId}.
-     * @param lsb The least significant bits of the {@link SegmentId}.
-     * @return A non-{@code null} instance of {@link SegmentId}.
-     */
-    @Nonnull
-    SegmentId newSegmentId(long msb, long lsb);
 }

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=1784998&r1=1784997&r2=1784998&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:26:15 2017
@@ -247,12 +247,6 @@ public abstract class AbstractFileStore
         return segmentReader.readHeadState(getRevisions());
     }
 
-    @Override
-    @Nonnull
-    public SegmentId newSegmentId(long msb, long lsb) {
-        return tracker.newSegmentId(msb, lsb);
-    }
-
     /**
      * @return  the external BlobStore (if configured) with this store, {@code null} otherwise.
      */
@@ -268,7 +262,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(tracker, segmentReader, newSegmentId(msb, lsb), buffer);
+            Segment segment = new Segment(tracker, segmentReader, tracker.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=1784998&r1=1784997&r2=1784998&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:26:15 2017
@@ -261,7 +261,7 @@ public class FileStore extends AbstractF
 
     FileStore bind(TarRevisions revisions) throws IOException {
         this.revisions = revisions;
-        this.revisions.bind(this, initialNode());
+        this.revisions.bind(this, tracker, initialNode());
         return this;
     }
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java Wed Mar  1 17:26:15 2017
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,17 +42,19 @@ class FileStoreUtil {
      * provided segment store.
      *
      * @param store   An instance of {@link SegmentStore}.
+     * @param idProvider  The {@code SegmentIdProvider} of the {@code store}
      * @param journal Path to the journal file.
      * @return An instance of {@link RecordId}, or {@code null} if none could be
      * found.
      * @throws IOException If an I/O error occurs.
      */
-    static RecordId findPersistedRecordId(SegmentStore store, File journal) throws IOException {
+    static RecordId findPersistedRecordId(SegmentStore store, SegmentIdProvider idProvider, File journal)
+    throws IOException {
         try (JournalReader journalReader = new JournalReader(journal)) {
             while (journalReader.hasNext()) {
                 JournalEntry entry = journalReader.next();
                 try {
-                    RecordId id = RecordId.fromString(store, entry.getRevision());
+                    RecordId id = RecordId.fromString(idProvider, entry.getRevision());
                     if (store.containsSegment(id.getSegmentId())) {
                         return id;
                     }

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=1784998&r1=1784997&r2=1784998&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:26:15 2017
@@ -96,7 +96,7 @@ public class ReadOnlyFileStore extends A
 
     ReadOnlyFileStore bind(@Nonnull ReadOnlyRevisions revisions) throws IOException {
         this.revisions = revisions;
-        this.revisions.bind(this);
+        this.revisions.bind(this, tracker);
         currentHead = revisions.getHead();
         return this;
     }
@@ -107,7 +107,7 @@ public class ReadOnlyFileStore extends A
      * @param revision
      */
     public void setRevision(String revision) {
-        RecordId newHead = RecordId.fromString(this, revision);
+        RecordId newHead = RecordId.fromString(tracker, revision);
         if (revisions.setHead(currentHead, newHead)) {
             currentHead = newHead;
         }
@@ -233,7 +233,7 @@ public class ReadOnlyFileStore extends A
             for (UUID uuid : reader.getUUIDs()) {
                 long msb = uuid.getMostSignificantBits();
                 long lsb = uuid.getLeastSignificantBits();
-                ids.add(newSegmentId(msb, lsb));
+                ids.add(tracker.newSegmentId(msb, lsb));
             }
         }
         return ids;

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java Wed Mar  1 17:26:15 2017
@@ -33,6 +33,7 @@ import javax.annotation.Nonnull;
 import com.google.common.base.Function;
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.Revisions;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -64,15 +65,16 @@ public class ReadOnlyRevisions implement
     /**
      * Bind this instance to a store.
      * 
-     * @param store
-     *            store to bind to
+     * @param store store to bind to
+     * @param idProvider  {@code SegmentIdProvider} of the {@code store}
      * @throws IOException
      */
-    synchronized void bind(@Nonnull SegmentStore store) throws IOException {
+    synchronized void bind(@Nonnull SegmentStore store, @Nonnull SegmentIdProvider idProvider)
+    throws IOException {
         if (head.get() != null) {
             return;
         }
-        RecordId persistedId = findPersistedRecordId(store, new File(directory, JOURNAL_FILE_NAME));
+        RecordId persistedId = findPersistedRecordId(store, idProvider, new File(directory, JOURNAL_FILE_NAME));
         if (persistedId == null) {
             throw new IllegalStateException("Cannot start readonly store from empty journal");
         }

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java Wed Mar  1 17:26:15 2017
@@ -46,6 +46,7 @@ import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.Revisions;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,7 +59,7 @@ import org.slf4j.LoggerFactory;
  * The {@link #setHead(Function, Option...)} method supports a timeout
  * {@link Option}, which can be retrieved through factory methods of this class.
  * <p>
- * Instance of this class must be {@link #bind(SegmentStore, Supplier) bound} to
+ * Instance of this class must be {@link #bind(SegmentStore, SegmentIdProvider, Supplier)} bound} to
  * a {@code SegmentStore} otherwise its method throw {@code IllegalStateException}s.
  */
 public class TarRevisions implements Revisions, Closeable {
@@ -155,14 +156,18 @@ public class TarRevisions implements Rev
     /**
      * Bind this instance to a store.
      * @param store              store to bind to
+     * @param idProvider         {@code SegmentIdProvider} of the {@code store}
      * @param writeInitialNode   provider for the initial node in case the journal is empty.
      * @throws IOException
      */
-    synchronized void bind(@Nonnull SegmentStore store, @Nonnull Supplier<RecordId> writeInitialNode) throws IOException {
+    synchronized void bind(@Nonnull SegmentStore store,
+                           @Nonnull SegmentIdProvider idProvider,
+                           @Nonnull Supplier<RecordId> writeInitialNode)
+    throws IOException {
         if (head.get() != null) {
             return;
         }
-        RecordId persistedId = findPersistedRecordId(store, new File(directory, JOURNAL_FILE_NAME));
+        RecordId persistedId = findPersistedRecordId(store, idProvider, new File(directory, JOURNAL_FILE_NAME));
         if (persistedId == null) {
             head.set(writeInitialNode.get());
         } else {

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=1784998&r1=1784997&r2=1784998&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:26:15 2017
@@ -123,12 +123,6 @@ public class MemoryStore implements Segm
     }
 
     @Override
-    @Nonnull
-    public SegmentId newSegmentId(long msb, long lsb) {
-        return tracker.newSegmentId(msb, lsb);
-    }
-
-    @Override
     public void writeSegment(
             SegmentId id, byte[] data, int offset, int length) throws IOException {
         ByteBuffer buffer = ByteBuffer.allocate(length);

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSyncExecution.java Wed Mar  1 17:26:15 2017
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
 import com.google.common.base.Supplier;
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentNodeBuilder;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
@@ -46,12 +47,15 @@ class StandbyClientSyncExecution {
 
     private final FileStore store;
 
+    private final SegmentIdProvider idProvider;
+
     private final StandbyClient client;
 
     private final Supplier<Boolean> running;
 
     StandbyClientSyncExecution(FileStore store, StandbyClient client, Supplier<Boolean> running) {
         this.store = store;
+        this.idProvider = store.getSegmentIdProvider();
         this.client = client;
         this.running = running;
     }
@@ -83,7 +87,7 @@ class StandbyClientSyncExecution {
         if (head == null) {
             return null;
         }
-        return RecordId.fromString(store, head);
+        return RecordId.fromString(idProvider, head);
     }
 
     private SegmentNodeState newSegmentNodeState(RecordId id) {
@@ -205,7 +209,7 @@ class StandbyClientSyncExecution {
     }
 
     private boolean isLocal(UUID id) {
-        return store.containsSegment(store.newSegmentId(
+        return store.containsSegment(idProvider.newSegmentId(
                 id.getMostSignificantBits(),
                 id.getLeastSignificantBits()
         ));
@@ -220,7 +224,7 @@ class StandbyClientSyncExecution {
 
         long msb = uuid.getMostSignificantBits();
         long lsb = uuid.getLeastSignificantBits();
-        SegmentId segmentId = store.newSegmentId(msb, lsb);
+        SegmentId segmentId = idProvider.newSegmentId(msb, lsb);
         store.writeSegment(segmentId, data, 0, data.length);
     }
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyReferencesReader.java Wed Mar  1 17:26:15 2017
@@ -45,7 +45,7 @@ class DefaultStandbyReferencesReader imp
         long msb = uuid.getMostSignificantBits();
         long lsb = uuid.getLeastSignificantBits();
 
-        Segment segment = readSegmentWithRetry(store, store.newSegmentId(msb, lsb));
+        Segment segment = readSegmentWithRetry(store, store.getSegmentIdProvider().newSegmentId(msb, lsb));
 
         if (segment == null) {
             return null;

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java Wed Mar  1 17:26:15 2017
@@ -44,7 +44,7 @@ class DefaultStandbySegmentReader implem
         long msb = uuid.getMostSignificantBits();
         long lsb = uuid.getLeastSignificantBits();
 
-        Segment segment = readSegmentWithRetry(store, store.newSegmentId(msb, lsb));
+        Segment segment = readSegmentWithRetry(store, store.getSegmentIdProvider().newSegmentId(msb, lsb));
 
         if (segment == null) {
             return null;

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugSegments.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugSegments.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugSegments.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugSegments.java Wed Mar  1 17:26:15 2017
@@ -154,7 +154,7 @@ public class DebugSegments implements Ru
 
         if (matcher.group(1) != null) {
             UUID uuid = UUID.fromString(matcher.group(1));
-            SegmentId id = store.newSegmentId(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
+            SegmentId id = store.getSegmentIdProvider().newSegmentId(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
             System.out.println(id.getSegment());
             return;
         }
@@ -163,9 +163,9 @@ public class DebugSegments implements Ru
         RecordId id2 = null;
 
         if (matcher.group(2) != null) {
-            id1 = fromString(store, matcher.group(3));
+            id1 = fromString(store.getSegmentIdProvider(), matcher.group(3));
             if (matcher.group(4) != null) {
-                id2 = fromString(store, matcher.group(5));
+                id2 = fromString(store.getSegmentIdProvider(), matcher.group(5));
             }
         }
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugStore.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/DebugStore.java Wed Mar  1 17:26:15 2017
@@ -114,7 +114,7 @@ public class DebugStore implements Runna
             UUID uuid = segment.getReferencedSegmentId(i);
             long msb = uuid.getMostSignificantBits();
             long lsb = uuid.getLeastSignificantBits();
-            result.add(store.newSegmentId(msb, lsb));
+            result.add(store.getSegmentIdProvider().newSegmentId(msb, lsb));
         }
 
         return result;

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java Wed Mar  1 17:26:15 2017
@@ -31,6 +31,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.segment.file.ReadOnlyFileStore;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -211,13 +212,14 @@ public class Diff implements Runnable {
         }
 
         try (ReadOnlyFileStore store = fileStoreBuilder(path).withBlobStore(newBasicReadOnlyBlobStore()).buildReadOnly()) {
+            SegmentIdProvider idProvider = store.getSegmentIdProvider();
             RecordId idL;
 
             try {
                 if (tokens[0].equalsIgnoreCase("head")) {
                     idL = store.getRevisions().getHead();
                 } else {
-                    idL = fromString(store, tokens[0]);
+                    idL = fromString(idProvider, tokens[0]);
                 }
             } catch (IllegalArgumentException e) {
                 System.out.println("Invalid left endpoint for interval " + interval);
@@ -230,7 +232,7 @@ public class Diff implements Runnable {
                 if (tokens[1].equalsIgnoreCase("head")) {
                     idR = store.getRevisions().getHead();
                 } else {
-                    idR = fromString(store, tokens[1]);
+                    idR = fromString(idProvider, tokens[1]);
                 }
             } catch (IllegalArgumentException e) {
                 System.out.println("Invalid left endpoint for interval " + interval);
@@ -260,9 +262,9 @@ public class Diff implements Runnable {
                         return;
                     }
                     Iterator<String> revDiffsIt = revDiffs.iterator();
-                    RecordId idLt = fromString(store, revDiffsIt.next());
+                    RecordId idLt = fromString(idProvider, revDiffsIt.next());
                     while (revDiffsIt.hasNext()) {
-                        RecordId idRt = fromString(store, revDiffsIt.next());
+                        RecordId idRt = fromString(idProvider, revDiffsIt.next());
                         boolean good = diff(store, idLt, idRt, pw);
                         idLt = idRt;
                         if (!good && !ignoreMissingSegments) {

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java?rev=1784998&r1=1784997&r2=1784998&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java Wed Mar  1 17:26:15 2017
@@ -146,7 +146,7 @@ public class SegmentGraphTest {
     public void testSegmentGraphWithFilter() throws Exception {
         ReadOnlyFileStore store = fileStoreBuilder(getStoreFolder()).buildReadOnly();
         try {
-            Predicate<UUID> filter = createRegExpFilter(".*(writer2|writer3).*", store);
+            Predicate<UUID> filter = createRegExpFilter(".*(writer2|writer3).*", store.getSegmentIdProvider());
             Graph<UUID> segmentGraph = parseSegmentGraph(store, filter);
             assertEquals(filteredSegments, newHashSet(segmentGraph.vertices()));
             Map<UUID, Set<UUID>> map = newHashMap();

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=1784998&r1=1784997&r2=1784998&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:26:15 2017
@@ -47,9 +47,9 @@ public class SegmentIdFactoryTest {
 
     @Test
     public void internedSegmentIds() {
-        assertTrue(store.newSegmentId(0, 0) == store.newSegmentId(0, 0));
-        assertTrue(store.newSegmentId(1, 2) == store.newSegmentId(1, 2));
-        assertTrue(store.newSegmentId(1, 2) != store.newSegmentId(3, 4));
+        assertTrue(idProvider.newSegmentId(0, 0) == idProvider.newSegmentId(0, 0));
+        assertTrue(idProvider.newSegmentId(1, 2) == idProvider.newSegmentId(1, 2));
+        assertTrue(idProvider.newSegmentId(1, 2) != idProvider.newSegmentId(3, 4));
     }
 
     @Test