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 2016/05/23 11:55:22 UTC

svn commit: r1745163 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/segment/ test/java/org/apache/jackrabbit/oak/segment/

Author: mduerig
Date: Mon May 23 11:55:21 2016
New Revision: 1745163

URL: http://svn.apache.org/viewvc?rev=1745163&view=rev
Log:
OAK-2833: Refactor TarMK
- Don't pass segment version around where it is not needed
- Assert nullability for clarification
- Make write methods of SegmentWriter public to make that class' API conherent

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.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/SegmentParserTest.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java Mon May 23 11:55:21 2016
@@ -41,7 +41,7 @@ import com.google.common.collect.Compari
  * A map. The top level record is either a record of type "BRANCH" or "LEAF"
  * (depending on the data).
  */
-class MapRecord extends Record {
+public class MapRecord extends Record {
 
     /**
      * Magic constant from a random number generator, used to generate

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java Mon May 23 11:55:21 2016
@@ -133,10 +133,9 @@ final class RecordWriters {
 
     public static RecordWriter newTemplateWriter(Collection<RecordId> ids,
             RecordId[] propertyNames, byte[] propertyTypes, int head, RecordId primaryId,
-            List<RecordId> mixinIds, RecordId childNameId, RecordId propNamesId,
-            SegmentVersion version) {
+            List<RecordId> mixinIds, RecordId childNameId, RecordId propNamesId) {
         return new TemplateWriter(ids, propertyNames, propertyTypes, head, primaryId, mixinIds,
-            childNameId, propNamesId, version);
+            childNameId, propNamesId);
     }
 
     public static RecordWriter newNodeStateWriter(RecordId stableId, List<RecordId> ids) {
@@ -444,11 +443,10 @@ final class RecordWriters {
         private final List<RecordId> mixinIds;
         private final RecordId childNameId;
         private final RecordId propNamesId;
-        private final SegmentVersion version;
 
         private TemplateWriter(Collection<RecordId> ids, RecordId[] propertyNames,
                 byte[] propertyTypes, int head, RecordId primaryId, List<RecordId> mixinIds,
-                RecordId childNameId, RecordId propNamesId, SegmentVersion version) {
+                RecordId childNameId, RecordId propNamesId) {
             super(TEMPLATE, 4 + propertyTypes.length, ids);
             this.propertyNames = propertyNames;
             this.propertyTypes = propertyTypes;
@@ -457,7 +455,6 @@ final class RecordWriters {
             this.mixinIds = mixinIds;
             this.childNameId = childNameId;
             this.propNamesId = propNamesId;
-            this.version = version;
         }
 
         @Override

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java Mon May 23 11:55:21 2016
@@ -27,6 +27,7 @@ import static com.google.common.collect.
 import static java.lang.Boolean.getBoolean;
 import static org.apache.jackrabbit.oak.commons.IOUtils.closeQuietly;
 import static org.apache.jackrabbit.oak.segment.SegmentId.isDataSegmentId;
+import static org.apache.jackrabbit.oak.segment.SegmentVersion.LATEST_VERSION;
 import static org.apache.jackrabbit.oak.segment.SegmentVersion.isValid;
 import static org.apache.jackrabbit.oak.segment.SegmentWriter.BLOCK_SIZE;
 
@@ -47,7 +48,6 @@ import javax.annotation.Nullable;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
 import org.apache.commons.io.HexDump;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.jackrabbit.oak.api.PropertyState;
@@ -195,12 +195,7 @@ public class Segment {
         return (address + boundary - 1) & ~(boundary - 1);
     }
 
-    public Segment(SegmentTracker tracker, SegmentId id, ByteBuffer data) {
-        this(tracker, id, data, SegmentVersion.LATEST_VERSION);
-    }
-
-    public Segment(SegmentTracker tracker, final SegmentId id, final ByteBuffer data, SegmentVersion version) {
-        Preconditions.checkArgument(isValid(version));
+    public Segment(SegmentTracker tracker, final SegmentId id, final ByteBuffer data) {
         this.tracker = checkNotNull(tracker);
         this.id = checkNotNull(id);
 
@@ -229,7 +224,7 @@ public class Segment {
             this.version = SegmentVersion.fromByte(segmentVersion);
         } else {
             this.refids = null;
-            this.version = version;
+            this.version = LATEST_VERSION;
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Mon May 23 11:55:21 2016
@@ -110,8 +110,7 @@ public class SegmentTracker {
         }
 
         this.store = store;
-        this.writer = new SegmentWriter(store, version,
-                            new SegmentBufferWriterPool(store, version, "sys"));
+        this.writer = new SegmentWriter(store, new SegmentBufferWriterPool(store, version, "sys"));
         stringCache = new StringCache(getLong(STRING_CACHE_SIZE, (long) cacheSizeMB) * MB);
         segmentCache = CacheLIRS.<SegmentId, Segment>newBuilder()
             .module("SegmentTracker")

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java Mon May 23 11:55:21 2016
@@ -90,11 +90,6 @@ public class SegmentWriter {
 
     private final SegmentStore store;
 
-    /**
-     * Version of the segment storage format.
-     */
-    private final SegmentVersion version;
-
     private final WriteOperationHandler writeOperationHandler;
 
     /**
@@ -102,13 +97,10 @@ public class SegmentWriter {
      * pointed out in the class comment.
      *
      * @param store      store to write to
-     * @param version    segment version to write
      * @param writeOperationHandler  handler for write operations.
      */
-    public SegmentWriter(SegmentStore store, SegmentVersion version,
-                         WriteOperationHandler writeOperationHandler) {
+    public SegmentWriter(SegmentStore store, WriteOperationHandler writeOperationHandler) {
         this.store = store;
-        this.version = version;
         this.writeOperationHandler = writeOperationHandler;
         this.cacheManager = new WriterCacheManager();
     }
@@ -124,7 +116,7 @@ public class SegmentWriter {
     }
 
     @Nonnull
-    MapRecord writeMap(final MapRecord base, final Map<String, RecordId> changes) throws IOException {
+    public MapRecord writeMap(final MapRecord base, final Map<String, RecordId> changes) throws IOException {
         return new MapRecord(
             writeOperationHandler.execute(new SegmentWriteOperation() {
                 @Override
@@ -155,7 +147,7 @@ public class SegmentWriter {
     }
 
     @Nonnull
-    SegmentBlob writeBlob(final Blob blob) throws IOException {
+    public SegmentBlob writeBlob(final Blob blob) throws IOException {
         return new SegmentBlob(
             writeOperationHandler.execute(new SegmentWriteOperation() {
                 @Override
@@ -174,7 +166,7 @@ public class SegmentWriter {
      * @return block record identifier
      */
     @Nonnull
-    RecordId writeBlock(final byte[] bytes, final int offset, final int length) throws IOException {
+    public RecordId writeBlock(final byte[] bytes, final int offset, final int length) throws IOException {
         return writeOperationHandler.execute(new SegmentWriteOperation() {
             @Override
             public RecordId execute(SegmentBufferWriter writer) throws IOException {
@@ -203,7 +195,7 @@ public class SegmentWriter {
     }
 
     @Nonnull
-    SegmentPropertyState writeProperty(final PropertyState state) throws IOException {
+    public SegmentPropertyState writeProperty(final PropertyState state) throws IOException {
         RecordId id = writeOperationHandler.execute(new SegmentWriteOperation() {
             @Override
             public RecordId execute(SegmentBufferWriter writer) throws IOException {
@@ -790,7 +782,7 @@ public class SegmentWriter {
 
             RecordId tid = RecordWriters.newTemplateWriter(ids, propertyNames,
                 propertyTypes, head, primaryId, mixinIds, childNameId,
-                propNamesId, version).write(writer);
+                propNamesId).write(writer);
             templateCache.put(template, tid);
             return tid;
         }
@@ -882,6 +874,7 @@ public class SegmentWriter {
             for (PropertyTemplate pt : template.getPropertyTemplates()) {
                 String name = pt.getName();
                 PropertyState property = state.getProperty(name);
+                assert property != null;
 
                 if (hasSegment(property)) {
                     RecordId pid = ((Record) property).getRecordId();

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java Mon May 23 11:55:21 2016
@@ -54,8 +54,7 @@ public class RecordUsageAnalyserTest {
         store = mock(SegmentStore.class);
         SegmentTracker tracker = new SegmentTracker(store);
         when(store.getTracker()).thenReturn(tracker);
-        writer = new SegmentWriter(store, LATEST_VERSION,
-            new SegmentBufferWriter(store, LATEST_VERSION, ""));
+        writer = new SegmentWriter(store, new SegmentBufferWriter(store, LATEST_VERSION, ""));
         analyser = new RecordUsageAnalyser();
     }
 

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=1745163&r1=1745162&r2=1745163&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 Mon May 23 11:55:21 2016
@@ -70,13 +70,13 @@ public class SegmentGraphTest {
             SegmentNodeState root = store.getHead();
             segments.add(getSegmentId(root));
 
-            SegmentWriter w1 = new SegmentWriter(store, LATEST_VERSION,
+            SegmentWriter w1 = new SegmentWriter(store,
                     new SegmentBufferWriter(store, LATEST_VERSION, "writer1"));
 
-            SegmentWriter w2 = new SegmentWriter(store, LATEST_VERSION,
+            SegmentWriter w2 = new SegmentWriter(store,
                     new SegmentBufferWriter(store, LATEST_VERSION, "writer2"));
 
-            SegmentWriter w3 = new SegmentWriter(store, LATEST_VERSION,
+            SegmentWriter w3 = new SegmentWriter(store,
                     new SegmentBufferWriter(store, LATEST_VERSION, "writer3", 0));
 
             SegmentPropertyState p1 = w1.writeProperty(createProperty("p1", "v1"));

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java?rev=1745163&r1=1745162&r2=1745163&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java Mon May 23 11:55:21 2016
@@ -143,8 +143,7 @@ public class SegmentParserTest {
     @Before
     public void setup() throws IOException {
         store = FileStore.builder(folder.getRoot()).build();
-        writer = new SegmentWriter(store, LATEST_VERSION,
-            new SegmentBufferWriter(store, LATEST_VERSION, ""));
+        writer = new SegmentWriter(store, new SegmentBufferWriter(store, LATEST_VERSION, ""));
     }
 
     @After