Thomas Mueller created JCR-3793:
-----------------------------------
Summary: vlt: with many child nodes, NodeNameList.restoreOrder is
very slow with Oak
Key: JCR-3793
URL: https://issues.apache.org/jira/browse/JCR-3793
Project: Jackrabbit Content Repository
Issue Type: Improvement
Reporter: Thomas Mueller
The method org.apache.jackrabbit.vault.fs.api.NodeNameList.restoreOrder
re-orders orderable child nodes by using Node.orderBefore. This is very slow if
there are many child nodes, specially with Oak (minutes for 10'000 nodes, while
only about 1 second for Jackrabbit 2.x).
[~tripod], I wonder if a possible solution is to first check whether
re-ordering is needed? For example using:
{noformat}
boolean isOrdered(ArrayList<String> names, Node parent)
throws RepositoryException {
NodeIterator it1 = parent.getNodes();
for (Iterator<String> it2 = names.iterator(); it2.hasNext();) {
if (!it1.hasNext() || !it1.nextNode().getName().equals(it2.next()))
{
return false;
}
}
return !it1.hasNext();
}
{noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)