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 ch...@apache.org on 2015/06/12 05:52:35 UTC
svn commit: r1685023 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java
Author: chetanm
Date: Fri Jun 12 03:52:34 2015
New Revision: 1685023
URL: http://svn.apache.org/r1685023
Log:
OAK-2927 - ReferenceEditor newIds consuming lots of memory during migration
Applying patch from Alex Parvulescu
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java?rev=1685023&r1=1685022&r2=1685023&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java Fri Jun 12 03:52:34 2015
@@ -31,6 +31,7 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.commons.PathUtils.isAbsolute;
import static org.apache.jackrabbit.oak.plugins.index.reference.NodeReferenceConstants.REF_NAME;
import static org.apache.jackrabbit.oak.plugins.index.reference.NodeReferenceConstants.WEAK_REF_NAME;
+import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.MISSING_NODE;
import static org.apache.jackrabbit.oak.plugins.version.VersionConstants.SYSTEM_PATHS;
import java.util.Map;
@@ -115,6 +116,12 @@ class ReferenceEditor extends DefaultEdi
*/
private final Set<String> newIds;
+ /**
+ * flag marking a reindex, case in which we don't need to keep track of the
+ * newIds set
+ */
+ private final boolean isReindex;
+
public ReferenceEditor(NodeBuilder definition, NodeState root) {
this.parent = null;
this.name = null;
@@ -130,6 +137,7 @@ class ReferenceEditor extends DefaultEdi
this.discardedIds = newHashSet();
this.versionStoreIds = newHashSet();
this.newIds = newHashSet();
+ this.isReindex = MISSING_NODE == root;
}
private ReferenceEditor(ReferenceEditor parent, String name, String uuid) {
@@ -147,6 +155,7 @@ class ReferenceEditor extends DefaultEdi
this.discardedIds = parent.discardedIds;
this.versionStoreIds = parent.versionStoreIds;
this.newIds = parent.newIds;
+ this.isReindex = parent.isReindex;
}
/**
@@ -282,7 +291,7 @@ class ReferenceEditor extends DefaultEdi
@Override
public Editor childNodeAdded(String name, NodeState after) {
String uuid = after.getString(JCR_UUID);
- if (uuid != null) {
+ if (!isReindex && uuid != null) {
newIds.add(uuid);
}
return new ReferenceEditor(this, name, uuid);