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/12 20:47:21 UTC
svn commit: r1602261 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment:
Record.java SegmentBlob.java SegmentNodeState.java
Author: jukka
Date: Thu Jun 12 18:47:21 2014
New Revision: 1602261
URL: http://svn.apache.org/r1602261
Log:
OAK-1804: TarMK compaction
Only use the compaction map to speed up equality checks of nodes and blobs, not those of all other records.
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Record.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeState.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Record.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Record.java?rev=1602261&r1=1602260&r2=1602261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Record.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Record.java Thu Jun 12 18:47:21 2014
@@ -32,15 +32,7 @@ class Record {
}
static boolean fastEquals(Record a, Record b) {
- if (a.segmentId == b.segmentId && a.offset == b.offset) {
- return true;
- }
-
- CompactionMap compaction = a.segmentId.getTracker().getCompactionMap();
- RecordId aid = a.getRecordId();
- RecordId bid = b.getRecordId();
- return compaction.wasCompactedTo(aid, bid)
- || compaction.wasCompactedTo(bid, aid);
+ return a.segmentId == b.segmentId && a.offset == b.offset;
}
/**
@@ -67,6 +59,11 @@ class Record {
this.offset = offset;
}
+ protected boolean wasCompactedTo(Record after) {
+ CompactionMap map = segmentId.getTracker().getCompactionMap();
+ return map.wasCompactedTo(getRecordId(), after.getRecordId());
+ }
+
/**
* Returns the segment that contains this record.
*
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java?rev=1602261&r1=1602260&r2=1602261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java Thu Jun 12 18:47:21 2014
@@ -180,6 +180,9 @@ public class SegmentBlob extends Record
public boolean equals(Object object) {
if (object == this || fastEquals(this, object)) {
return true;
+ } else if (object instanceof SegmentBlob
+ && wasCompactedTo((SegmentBlob) object)) {
+ return true;
} else {
return object instanceof Blob
&& AbstractBlob.equal(this, (Blob) object);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeState.java?rev=1602261&r1=1602260&r2=1602261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeState.java Thu Jun 12 18:47:21 2014
@@ -389,13 +389,17 @@ public class SegmentNodeState extends Re
return AbstractNodeState.compareAgainstBaseState(this, base, diff);
}
- Template afterTemplate = getTemplate();
- RecordId afterId = getRecordId();
-
SegmentNodeState that = (SegmentNodeState) base;
+ if (wasCompactedTo(that)) {
+ return true; // no changes during compaction
+ }
+
Template beforeTemplate = that.getTemplate();
RecordId beforeId = that.getRecordId();
+ Template afterTemplate = getTemplate();
+ RecordId afterId = getRecordId();
+
// Compare type properties
if (!compareProperties(
beforeTemplate.getPrimaryType(), afterTemplate.getPrimaryType(),