天天看点

flume的Spoolingdir下有多个空文件,监控失败的bug

今天发现测试机上的flume突然不工作了,但是进程依然还在,分析日志发现一直在报exception

08 Apr 2014 10:20:57,270 ERROR [pool-5-thread-1] (org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run:173)  - Uncaught exception in Runnable

java.lang.IllegalStateException: File should not roll when commit is outstanding.

        at org.apache.flume.client.avro.ReliableSpoolingFileEventReader.readEvents(ReliableSpoolingFileEventReader.java:204)

        at org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:160)

        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)

        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)

        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)

        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)

        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)

        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)

        at java.lang.Thread.run(Thread.java:662)

google发现是由于flume本山的bug所导致的。通过测试,发现flume在监控到多个空文件将其传输完之后就会报上述异常,而且不再工作了。

这个bug在最新的1.4.0的版本中依然存在。

官方解释: http://mail-archives.apache.org/mod_mbox/flume-dev/201303.mbox/%[email protected]%3E

    https://issues.apache.org/jira/browse/FLUME-1934

继续阅读