NIFI-1414: Ensure that the DirectoryStream is closed after streaming contents of a directory
Signed-off-by: Matt Gilman <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/3fc8bc00 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/3fc8bc00 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/3fc8bc00 Branch: refs/heads/NIFI-259 Commit: 3fc8bc00f11a32ee20d7aa4ad0615868d8aab684 Parents: ddd71b0 Author: Mark Payne <[email protected]> Authored: Wed Jan 20 09:12:14 2016 -0500 Committer: Matt Gilman <[email protected]> Committed: Wed Jan 20 17:07:20 2016 -0500 ---------------------------------------------------------------------- .../nifi/processors/standard/TailFile.java | 29 ++++++++++---------- 1 file changed, 15 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/3fc8bc00/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/TailFile.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/TailFile.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/TailFile.java index 3d6d3a0..626f7a4 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/TailFile.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/TailFile.java @@ -535,21 +535,22 @@ public class TailFile extends AbstractProcessor { } final List<File> rolledOffFiles = new ArrayList<>(); - final DirectoryStream<Path> dirStream = Files.newDirectoryStream(directory.toPath(), rollingPattern); - for (final Path path : dirStream) { - final File file = path.toFile(); - final long lastMod = file.lastModified(); - - if (file.lastModified() < minTimestamp) { - getLogger().debug("Found rolled off file {} but its last modified timestamp is before the cutoff (Last Mod = {}, Cutoff = {}) so will not consume it", - new Object[] {file, lastMod, minTimestamp}); - - continue; - } else if (file.equals(tailFile)) { - continue; - } + try (final DirectoryStream<Path> dirStream = Files.newDirectoryStream(directory.toPath(), rollingPattern)) { + for (final Path path : dirStream) { + final File file = path.toFile(); + final long lastMod = file.lastModified(); + + if (file.lastModified() < minTimestamp) { + getLogger().debug("Found rolled off file {} but its last modified timestamp is before the cutoff (Last Mod = {}, Cutoff = {}) so will not consume it", + new Object[] {file, lastMod, minTimestamp}); + + continue; + } else if (file.equals(tailFile)) { + continue; + } - rolledOffFiles.add(file); + rolledOffFiles.add(file); + } } // Sort files based on last modified timestamp. If same timestamp, use filename as a secondary sort, as often
