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