[ https://issues.apache.org/jira/browse/JCRVLT-789?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17933874#comment-17933874 ]
Julian Reschke commented on JCRVLT-789: --------------------------------------- Pragmatically, we want to change https://github.com/apache/jackrabbit-filevault/blob/14727e599aec7cfb5135eaa33944a11a391188f6/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java#L713 so that iterating through the child nodes happens less. For that, we'd need to move the conditions that would break the iteration outside. For PathFilterSet, this hack: {noformat} diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java index 7c757eee..4d1094f1 100644 --- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java +++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java @@ -708,6 +708,9 @@ public class AggregateImpl implements Aggregate { include(node, p, path); } } + + PathFilterSet coverSet = filter.getCoveringFilterSet(node.getPath() + "/x"); + // include "our" nodes to the include set and delegate the others to the // respective aggregator building sub aggregates NodeIterator nIter = node.getNodes(); @@ -717,7 +720,6 @@ public class AggregateImpl implements Aggregate { if (log.isTraceEnabled()) { log.trace("checking " + path); } - PathFilterSet coverSet = filter.getCoveringFilterSet(path); boolean isAncestor = filter.isAncestor(path); boolean isIncluded = filter.contains(path); if (coverSet == null && !isAncestor) { {noformat} indeed works. For "isAncestor" it seems to be harder. > AggregateImpl might be able to avoid iterating over sibling nodes > ----------------------------------------------------------------- > > Key: JCRVLT-789 > URL: https://issues.apache.org/jira/browse/JCRVLT-789 > Project: Jackrabbit FileVault > Issue Type: Improvement > Components: vlt > Reporter: Julian Reschke > Assignee: Julian Reschke > Priority: Major > > See > [https://github.com/apache/jackrabbit-filevault/blob/367ffb423d84993c5bb0eb0186f810a58b6227be/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java#L696] > > This code currently iterates unconditionally over child nodes (which is a > problem for large collections). We might be able to avoid that by checking > the filters before descending. > I tried a quick hack, and that made tests fail (which is good). > Will continue with a test case first. -- This message was sent by Atlassian Jira (v8.20.10#820010)