Repository: nifi Updated Branches: refs/heads/master 3fc8bc00f -> a2fb5fc22
NIFI-1414: Ensure that the DirectoryStream is closed after streaming contents of a directory Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/1845f6df Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/1845f6df Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/1845f6df Branch: refs/heads/master Commit: 1845f6df8d4589e0a53df6c79008dfe165765db3 Parents: 8f688d4 Author: Mark Payne <[email protected]> Authored: Wed Jan 20 09:12:14 2016 -0500 Committer: Mark Payne <[email protected]> Committed: Wed Jan 20 09:12:14 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/1845f6df/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
