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 th...@apache.org on 2013/08/14 12:16:53 UTC
svn commit: r1513797 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java
Author: thomasm
Date: Wed Aug 14 10:16:53 2013
New Revision: 1513797
URL: http://svn.apache.org/r1513797
Log:
OAK-858 NodeBuilder.getChildNodeCount performance and scalability (bugfix when there are many child nodes)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java?rev=1513797&r1=1513796&r2=1513797&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java Wed Aug 14 10:16:53 2013
@@ -267,6 +267,17 @@ public abstract class AbstractNodeState
}
// TODO inefficient unless there are very few child nodes
+
+ // compare the exact child node count
+ // (before, we only compared up to 20 entries)
+ c1 = getChildNodeCount(Long.MAX_VALUE);
+ c2 = other.getChildNodeCount(Long.MAX_VALUE);
+ if (c1 != c2) {
+ return false;
+ }
+
+ // compare all child nodes recursively (this is potentially very slow,
+ // as it recursively calls equals)
for (ChildNodeEntry entry : getChildNodeEntries()) {
if (!entry.getNodeState().equals(
other.getChildNode(entry.getName()))) {