You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Stefan Egli (JIRA)" <ji...@apache.org> on 2016/11/28 10:57:58 UTC
[jira] [Resolved] (OAK-5169) ChangeSetFilterImpl should support
large exclude-path sets
[ 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)