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