DirectoryScanner traverses directories despite limited inclusions
jjjhhhlll opened this issue · 1 comments
We have a directory with lots of files (enough to consume all jvm memory if traversed by DirectoryScanner).
We use an inclusion filter with ant-style pattern like this:
<includes>
<include>dir1/*/somefile.txt</include>
</includes>
Note: 'dir1' is NOT the very large directory.
Non-matching directories should end up here: https://github.com/codehaus-plexus/plexus-utils/blob/master/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java#L484 and then based off not matching the includes, the traversal should stop.
But it seems the 'couldHoldIncluded(name)' call is always returning true due to a bug in the implementation.
Here it constructs 'altStr' based off 'source' and not 'str' which causes a match of the pattern against the pattern, which always return true. I believe the intention is to normalize the path separator in 'str' not 'source' when constructing 'altStr'.
cheers,
Jon
Good catch! I will work on a patch.