diff --git a/flume-ng-sources/flume-taildir-source/src/main/java/org/apache/flume/source/taildir/TaildirSource.java b/flume-ng-sources/flume-taildir-source/src/main/java/org/apache/flume/source/taildir/TaildirSource.java index 9ecccd7487..097afffb00 100644 --- a/flume-ng-sources/flume-taildir-source/src/main/java/org/apache/flume/source/taildir/TaildirSource.java +++ b/flume-ng-sources/flume-taildir-source/src/main/java/org/apache/flume/source/taildir/TaildirSource.java @@ -322,6 +322,10 @@ public void run() { if (tf.getLastUpdated() + idleTimeout < now && tf.getRaf() != null) { idleInodes.add(tf.getInode()); } + File file = new File(tf.getPath()); + if (getInode(file) != tf.getInode() && !idleInodes.contains(tf.getInode())) { + idleInodes.add(tf.getInode()); + } } } catch (Throwable t) { logger.error("Uncaught exception in IdleFileChecker thread", t); @@ -330,6 +334,11 @@ public void run() { } } + private long getInode(File file) throws IOException { + long inode = (long) Files.getAttribute(file.toPath(), "unix:ino"); + return inode; + } + /** * Runnable class that writes a position file which has the last read position * of each file.