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();