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 md...@apache.org on 2013/05/30 12:49:23 UTC
svn commit: r1487812 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
Author: mduerig
Date: Thu May 30 10:49:23 2013
New Revision: 1487812
URL: http://svn.apache.org/r1487812
Log:
OAK-851: Slowness while traversing a tree
Avoid reconnecting when there are no pending moves
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java?rev=1487812&r1=1487811&r2=1487812&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java Thu May 30 10:49:23 2013
@@ -465,8 +465,11 @@ public class TreeImpl implements Tree {
private boolean enter() {
root.checkLive();
- applyPendingMoves();
- return reconnect();
+ if (applyPendingMoves()) {
+ return reconnect();
+ } else {
+ return nodeBuilder.exists();
+ }
}
private static boolean isHidden(String name) {
@@ -487,12 +490,17 @@ public class TreeImpl implements Tree {
}
}
- private void applyPendingMoves() {
+ private boolean applyPendingMoves() {
+ boolean movesApplied = false;
if (parent != null) {
- parent.applyPendingMoves();
+ movesApplied = parent.applyPendingMoves();
}
-
+ Move old = pendingMoves;
pendingMoves = pendingMoves.apply(this);
+ if (pendingMoves != old) {
+ movesApplied = true;
+ }
+ return movesApplied;
}
private PropertyState getVisibleProperty(String name) {