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 2013/07/17 15:05:35 UTC
svn commit: r1504111 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment:
SegmentPropertyState.java SegmentWriter.java
Author: jukka
Date: Wed Jul 17 13:05:35 2013
New Revision: 1504111
URL: http://svn.apache.org/r1504111
Log:
OAK-630: SegmentMK: Implement compareAgainstBaseState
Be more aggressive aobut reusing property records, so that comparisons will be quicker in common cases
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentPropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentPropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentPropertyState.java?rev=1504111&r1=1504110&r2=1504111&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentPropertyState.java Wed Jul 17 13:05:35 2013
@@ -45,6 +45,11 @@ class SegmentPropertyState extends Abstr
this.recordId = checkNotNull(recordId);
}
+ RecordId getRecordId() {
+ return recordId;
+ }
+
+
@Override @Nonnull
public String getName() {
return template.getName();
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java?rev=1504111&r1=1504110&r2=1504111&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java Wed Jul 17 13:05:35 2013
@@ -687,8 +687,23 @@ public class SegmentWriter {
ids.add(writeNode(state.getChildNode(template.getChildName())).getRecordId());
}
- for (PropertyTemplate property : template.getPropertyTemplates()) {
- ids.add(writeProperty(state.getProperty(property.getName())));
+ for (PropertyTemplate pt : template.getPropertyTemplates()) {
+ RecordId propertyId = null;
+ String name = pt.getName();
+ PropertyState property = state.getProperty(name);
+ if (before != null) {
+ // reuse previously stored property record, if possible
+ PropertyState beforeProperty = before.getProperty(name);
+ if (beforeProperty instanceof SegmentPropertyState
+ && property.equals(beforeProperty)) {
+ propertyId = ((SegmentPropertyState) beforeProperty)
+ .getRecordId();
+ }
+ }
+ if (propertyId == null) {
+ propertyId = writeProperty(property);
+ }
+ ids.add(propertyId);
}
RecordId recordId = prepare(0, ids);