[ https://issues.apache.org/jira/browse/OAK-5169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stefan Egli resolved OAK-5169. ------------------------------ Resolution: Fixed unprecise exclude filtering introduced in http://svn.apache.org/viewvc?rev=1771708&view=rev > 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)