[ https://issues.apache.org/jira/browse/FLUME-3101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
hunshenshi updated FLUME-3101: ------------------------------ Description: If there are many files in the path that need to be tail, and there is a file written by *high frequency* (for example, there are file a, file b and file c in the path, file a is written at high frequency), *taildir can read the batchSize size event from file a everytime*, then taildir will only read data from file a, other files will not to be read, because in TaildirSource.tailFileProcess will into an endless loop. code: {code:title=TaildirSource.java|borderStyle=solid} private void tailFileProcess(TailFile tf, boolean backoffWithoutNL) throws IOException, InterruptedException { while (true) { // if events.size >= batchSize will not break while, // then into endless loop to only read tf if (events.size() < batchSize) { break; } } } {code} was: If there are many files in the path that need to be tail, and there is a file written by *high frequency* (for example, there are file a, file b and file c in the path, file a is written at high frequency), *taildir can read the batchSize size event from file a everytime*, then taildir will only read data from file a, other files will not to be read, because in TaildirSource.tailFileProcess will into an endless loop. code: {code:title=Bar.java|borderStyle=solid} private void tailFileProcess(TailFile tf, boolean backoffWithoutNL) throws IOException, InterruptedException { while (true) { // if events.size >= batchSize will not break while, // then into endless loop to only read tf if (events.size() < batchSize) { break; } } } {code} > taildir source may endless loop when tail a file > ------------------------------------------------ > > Key: FLUME-3101 > URL: https://issues.apache.org/jira/browse/FLUME-3101 > Project: Flume > Issue Type: Bug > Components: Sinks+Sources > Affects Versions: 1.7.0 > Reporter: hunshenshi > Labels: patch, taildirsource > Fix For: 1.7.0 > > Attachments: FLUME-3101-0.patch > > > If there are many files in the path that need to be tail, and there is a file > written by *high frequency* (for example, there are file a, file b and file c > in the path, file a is written at high frequency), *taildir can read the > batchSize size event from file a everytime*, then taildir will only read data > from file a, other files will not to be read, because in > TaildirSource.tailFileProcess will into an endless loop. > code: > {code:title=TaildirSource.java|borderStyle=solid} > private void tailFileProcess(TailFile tf, boolean backoffWithoutNL) > throws IOException, InterruptedException { > while (true) { > // if events.size >= batchSize will not break while, > // then into endless loop to only read tf > if (events.size() < batchSize) { > break; > } > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)