Author: thomasm
Date: Mon Oct 21 14:02:06 2013
New Revision: 1534163
URL: http://svn.apache.org/r1534163
Log:
OAK-825 Unnecessary performance overhead (too many child nodes are traversed)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java?rev=1534163&r1=1534162&r2=1534163&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
Mon Oct 21 14:02:06 2013
@@ -533,13 +533,18 @@ public final class MongoNodeStore implem
docChildrenCache.put(path, clone);
c = clone;
}
- return Iterables.transform(c.childNames, new Function<String,
NodeDocument>() {
+ Iterable<NodeDocument> it = Iterables.transform(c.childNames,
+ new Function<String, NodeDocument>() {
@Override
public NodeDocument apply(String name) {
String p = PathUtils.concat(path, name);
return store.find(Collection.NODES, Utils.getIdFromPath(p));
}
});
+ if (c.childNames.size() > limit) {
+ it = Iterables.limit(it, limit);
+ }
+ return it;
}
@CheckForNull