Stefan Egli created OAK-5169:
--------------------------------

             Summary: ChangeSetFilterImpl should support large exclude-path sets
                 Key: OAK-5169
                 URL: https://issues.apache.org/jira/browse/OAK-5169
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.5.14
            Reporter: Stefan Egli
            Assignee: Stefan Egli
             Fix For: 1.5.15


The initial assumptions for the ChangeSetFilterImpl was for exclude paths (and 
include paths for that matter) to be a rather small set, perhaps less than 10. 
In real-life scenarios larger sets were seen, which render the {{excludes()}} 
algorithm there very non-well performing. As for large exclude sets the 
iteration through its patterns for each of the ChangeSet-paths becomes an 
O(n*m). This should be avoided and instead a deterministic approach taken.

The suggestion is to switch to an '_unprecise_' mode when the exclude paths 
passed to the ChangeSetFilterImpl is very large. In that case it can determine 
a reasonable set of parent paths, which it then compares against the ChangeSet 
paths. If one of those unprecise exclude paths matches, it shall treat this as 
'possibly excluded' - which means if the include paths match in that case, the 
filter should stop and conclude with 'include'.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to