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 ju...@apache.org on 2014/06/18 01:20:37 UTC

svn commit: r1603316 - in /jackrabbit/oak/branches/1.0: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java

Author: jukka
Date: Tue Jun 17 23:20:36 2014
New Revision: 1603316

URL: http://svn.apache.org/r1603316
Log:
1.0.2: Merged revision 1603307 (OAK-1804)

Modified:
    jackrabbit/oak/branches/1.0/   (props changed)
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java
    jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java

Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1603307

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java?rev=1603316&r1=1603315&r2=1603316&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMap.java Tue Jun 17 23:20:36 2014
@@ -124,7 +124,12 @@ class CompactionMap {
         return null;
     }
 
+    /**
+     * Adds a new entry to the compaction map. Overwriting a previously
+     * added entry is not supported.
+     */
     void put(RecordId before, RecordId after) {
+        assert get(before) == null;
         recent.put(before, after);
         if (recent.size() >= compressInterval) {
             compress();

Modified: jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java?rev=1603316&r1=1603315&r2=1603316&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java Tue Jun 17 23:20:36 2014
@@ -72,9 +72,13 @@ public class CompactionMapTest {
         for (int i = 0; i < segments; i++) {
             SegmentId id = factory.newDataSegmentId();
             int n = r.nextInt(maxEntriesPerSegment);
+            int offset = MAX_SEGMENT_SIZE;
             for (int j = 0; j < n; j++) {
-                RecordId before = new RecordId(id, newValidOffset(r));
-                RecordId after = new RecordId(factory.newDataSegmentId(), newValidOffset(r));
+                offset = newValidOffset(r, (n - j) << RECORD_ALIGN_BITS, offset);
+                RecordId before = new RecordId(id, offset);
+                RecordId after = new RecordId(
+                        factory.newDataSegmentId(),
+                        newValidOffset(r, 0, MAX_SEGMENT_SIZE));
                 entries.put(before, after);
                 map.put(before, after);
                 assertTrue("Failed with seed " + seed,
@@ -93,8 +97,13 @@ public class CompactionMapTest {
         }
     }
 
-    private int newValidOffset(Random random) {
-        return random.nextInt(MAX_SEGMENT_SIZE >> RECORD_ALIGN_BITS)
-                << RECORD_ALIGN_BITS;
+    /**
+     * Returns a new valid record offset, between {@code a} and {@code b},
+     * exclusive.
+     */
+    private int newValidOffset(Random random, int a, int b) {
+        int p = (a >> RECORD_ALIGN_BITS) + 1;
+        int q = (b >> RECORD_ALIGN_BITS);
+        return (p + random.nextInt(q - p)) << RECORD_ALIGN_BITS;
     }
 }