Author: mduerig
Date: Wed Nov 25 16:28:57 2015
New Revision: 1716470
URL: http://svn.apache.org/viewvc?rev=1716470&view=rev
Log:
OAK-1828: Improved SegmentWriter
Eliminate passing the SegmentTracker into the SegmentWriter
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBuilder.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentParserTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/TarWriterTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBuilder.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBuilder.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBuilder.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBuilder.java
Wed Nov 25 16:28:57 2015
@@ -66,8 +66,6 @@ class SegmentBuilder {
private final SegmentStore store;
- private final SegmentTracker tracker;
-
/**
* Version of the segment storage format.
*/
@@ -78,6 +76,8 @@ class SegmentBuilder {
*/
private final String wid;
+ private final SegmentTracker tracker;
+
/**
* The segment write buffer, filled from the end to the beginning
* (see OAK-629).
@@ -98,14 +98,14 @@ class SegmentBuilder {
*/
private int position;
- public SegmentBuilder(SegmentStore store, SegmentTracker tracker,
SegmentVersion version, String wid) {
+ public SegmentBuilder(SegmentStore store, SegmentVersion version, String
wid) {
this.store = store;
- this.tracker = tracker;
this.version = version;
this.wid = (wid == null
? "w-" + identityHashCode(this)
: wid);
+ this.tracker = store.getTracker();
this.buffer = createNewBuffer(version);
newSegment(this.wid);
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
Wed Nov 25 16:28:57 2015
@@ -121,7 +121,7 @@ public class SegmentTracker {
this.store = store;
this.compactionMap = new AtomicReference<CompactionMap>(
CompactionMap.EMPTY);
- this.writer = new SegmentWriter(store, this, version, "sys");
+ this.writer = new SegmentWriter(store, version, "sys");
StringCache c;
if (DISABLE_STRING_CACHE) {
c = null;
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
Wed Nov 25 16:28:57 2015
@@ -120,8 +120,6 @@ public class SegmentWriter {
private final SegmentStore store;
- private final SegmentTracker tracker;
-
/**
* Version of the segment storage format.
*/
@@ -129,25 +127,23 @@ public class SegmentWriter {
private final String wid;
- public SegmentWriter(SegmentStore store, SegmentTracker tracker,
SegmentVersion version) {
- this(store, tracker, version, null);
+ public SegmentWriter(SegmentStore store, SegmentVersion version) {
+ this(store, version, null);
}
/**
* @param store store to write to
- * @param tracker segment tracker for that {@code store}
* @param version segment version to write
* @param wid id of this writer
*/
- public SegmentWriter(SegmentStore store, SegmentTracker tracker,
SegmentVersion version, String wid) {
+ public SegmentWriter(SegmentStore store, SegmentVersion version, String
wid) {
this.store = store;
- this.tracker = tracker;
this.version = version;
this.wid = wid;
}
SegmentTracker getTracker() {
- return tracker;
+ return store.getTracker();
}
public void flush() {
@@ -964,7 +960,7 @@ public class SegmentWriter {
* @return the compacted node (if it was compacted)
*/
private SegmentNodeState uncompact(SegmentNodeState state) {
- RecordId id = tracker.getCompactionMap().get(state.getRecordId());
+ RecordId id =
store.getTracker().getCompactionMap().get(state.getRecordId());
if (id != null) {
return new SegmentNodeState(id);
} else {
@@ -1026,7 +1022,7 @@ public class SegmentWriter {
public synchronized SegmentBuilder borrowBuilder(Object key) {
SegmentBuilder builder = builders.remove(key);
if (builder == null) {
- builder = new SegmentBuilder(store, tracker, version, wid +
"." + (key.hashCode() & 0xffff));
+ builder = new SegmentBuilder(store, version, wid + "." +
(key.hashCode() & 0xffff));
}
borrowed.add(builder);
return builder;
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
Wed Nov 25 16:28:57 2015
@@ -894,7 +894,7 @@ public class FileStore implements Segmen
* @return a new {@link SegmentWriter} instance for writing to this store.
*/
public SegmentWriter createSegmentWriter(String wid) {
- return new SegmentWriter(this, tracker, getVersion(), wid);
+ return new SegmentWriter(this, getVersion(), wid);
}
/**
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
Wed Nov 25 16:28:57 2015
@@ -120,7 +120,7 @@ public class PartialCompactionMapTest {
}
private PartialCompactionMap createCompactionMap() {
- SegmentWriter writer = new SegmentWriter(segmentStore, getTracker(),
V_11);
+ SegmentWriter writer = new SegmentWriter(segmentStore, V_11);
if (usePersistedMap) {
return new PersistedCompactionMap(segmentStore);
} else {
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
Wed Nov 25 16:28:57 2015
@@ -69,7 +69,7 @@ public class RecordUsageAnalyserTest {
store = mock(SegmentStore.class);
SegmentTracker tracker = new SegmentTracker(store);
when(store.getTracker()).thenReturn(tracker);
- writer = new SegmentWriter(store, store.getTracker(), segmentVersion);
+ writer = new SegmentWriter(store, segmentVersion);
analyser = new RecordUsageAnalyser();
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentParserTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentParserTest.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentParserTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentParserTest.java
Wed Nov 25 16:28:57 2015
@@ -155,7 +155,7 @@ public class SegmentParserTest {
SegmentStore store = mock(SegmentStore.class,
withSettings().stubOnly());
SegmentTracker tracker = new SegmentTracker(store);
when(store.getTracker()).thenReturn(tracker);
- writer = new SegmentWriter(store, store.getTracker(), segmentVersion);
+ writer = new SegmentWriter(store, segmentVersion);
}
@Test
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
Wed Nov 25 16:28:57 2015
@@ -162,7 +162,7 @@ public class FileStoreIT {
store = new FileStore(directory, 1, false);
head = store.getHead();
assertTrue(store.size() > largeBinarySize);
- writer = new SegmentWriter(store, store.getTracker(), V_11);
+ writer = new SegmentWriter(store, V_11);
compactor = new Compactor(writer);
compacted = compactor.compact(EMPTY_NODE, head, EMPTY_NODE);
builder = head.builder();
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/TarWriterTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/TarWriterTest.java?rev=1716470&r1=1716469&r2=1716470&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/TarWriterTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/TarWriterTest.java
Wed Nov 25 16:28:57 2015
@@ -40,7 +40,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.Segment;
import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
import org.apache.jackrabbit.oak.plugins.segment.SegmentWriter;
import
org.apache.jackrabbit.oak.plugins.segment.file.TarWriterTest.SegmentGraphBuilder.Node;
import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore;
@@ -157,8 +156,7 @@ public class TarWriterTest {
segments.put(id, buffer);
}
};
- private final SegmentTracker tracker = new SegmentTracker(store, V_11);
- private final SegmentWriter writer = new SegmentWriter(store, tracker,
V_11);
+ private final SegmentWriter writer = new SegmentWriter(store, V_11);
private int nextNodeNo;
@@ -172,7 +170,7 @@ public class TarWriterTest {
this.name = name;
this.selfId = selfId;
this.data = data.array();
- segment = new Segment(tracker, selfId.getSegmentId(), data);
+ segment = new Segment(store.getTracker(),
selfId.getSegmentId(), data);
}
public void write(TarWriter tarWriter) throws IOException {