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;
}
}