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 {


Reply via email to