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 fr...@apache.org on 2016/07/14 12:49:01 UTC
svn commit: r1752636 - in /jackrabbit/oak/trunk/oak-segment-tar/src:
main/java/org/apache/jackrabbit/oak/segment/
test/java/org/apache/jackrabbit/oak/segment/
test/java/org/apache/jackrabbit/oak/segment/file/
Author: frm
Date: Thu Jul 14 12:49:01 2016
New Revision: 1752636
URL: http://svn.apache.org/viewvc?rev=1752636&view=rev
Log:
OAK-4560 - Add failing test to prove that stable IDs are not propagated across generations
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
- copied, changed from r1752600, jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java
Removed:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java?rev=1752636&r1=1752635&r2=1752636&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java Thu Jul 14 12:49:01 2016
@@ -136,6 +136,18 @@ public class SegmentNodeState extends Re
}
}
+ byte[] getStableIdBytes() {
+ RecordId id = getSegment().readRecordId(getOffset());
+
+ if (id.equals(getRecordId())) {
+ return id.getBytes();
+ } else {
+ byte[] buffer = new byte[18];
+ id.getSegment().readBytes(id.getOffset(), buffer, 0, buffer.length);
+ return buffer;
+ }
+ }
+
@Override
public boolean exists() {
return true;
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java (from r1752600, jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java&r1=1752600&r2=1752636&rev=1752636&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java Thu Jul 14 12:49:01 2016
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertTrue;
import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
@@ -25,6 +26,9 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.segment.SegmentWriter;
import org.apache.jackrabbit.oak.segment.SegmentWriterBuilder;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -48,6 +52,29 @@ public class NodeRecordTest {
}
}
+ @Test
+ @Ignore("OAK-4560")
+ public void stableIdShouldPersistAcrossGenerations() throws Exception {
+ try (FileStore store = newFileStore()) {
+ SegmentWriter writer;
+
+ writer = SegmentWriterBuilder.segmentWriterBuilder("1").withGeneration(1).build(store);
+ SegmentNodeState one = writer.writeNode(EmptyNodeState.EMPTY_NODE);
+ writer.flush();
+
+ writer = SegmentWriterBuilder.segmentWriterBuilder("2").withGeneration(2).build(store);
+ SegmentNodeState two = writer.writeNode(one);
+ writer.flush();
+
+ writer = SegmentWriterBuilder.segmentWriterBuilder("3").withGeneration(3).build(store);
+ SegmentNodeState three = writer.writeNode(two);
+ writer.flush();
+
+ assertArrayEquals(three.getStableIdBytes(), two.getStableIdBytes());
+ assertArrayEquals(two.getStableIdBytes(), one.getStableIdBytes());
+ }
+ }
+
private boolean isRootRecord(SegmentNodeState sns) {
Segment segment = sns.getRecordId().getSegment();