[ 
https://issues.apache.org/jira/browse/FLUME-2282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13855332#comment-13855332
 ] 

Roshan Naik commented on FLUME-2282:
------------------------------------

The exception was thrown because the channel was shut as part of the 
reconfiguration (which changed manually)
. 
Reproduced this by simply updating the sink batch size on the avro sink and the 
spooldir sources in the config file of a running agent and tailed the logs, 
thats it.  

Also tried a quick patch in SpoolDir by explicitly catching the IllegalState 
Exception and introducing a few seconds of sleep before retrying (similar to 
the backof logic that was introduced recently). Once the file channel finished 
replaying the spoolDir resume normal  operations.

There are no other errors prior to this instance as such, but some general INFO 
& WARN relating to what appears to be active source and sinks  threads not 
being able to make progress on their open transactions.

> File Channel throws IllegalStateException causing some sources to not be to 
> recover from a reconfig
> ---------------------------------------------------------------------------------------------------
>
>                 Key: FLUME-2282
>                 URL: https://issues.apache.org/jira/browse/FLUME-2282
>             Project: Flume
>          Issue Type: Bug
>          Components: Configuration, File Channel
>            Reporter: Roshan Naik
>              Labels: channel
>
> when the config file is updated and the file channel is shut, the Source 
> receives a java.lang.IllegalState exception from FileChannel. Unfortunately 
> unless sources are designed to catch all exception types, they will not know 
> this is a channel exception and likely to go into fuzzy states.
> For instance the FLUME-2255 patch catches only ChannelException.
> The below stack trace can be seen in logs when this happens with FLUME-2255 
> applied:
> {code}
> 21 Dec 2013 21:15:03,030 ERROR [pool-17-thread-1] 
> (org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run:194) 
>  - Uncaught exception in SpoolDirSource thread 
> java.lang.IllegalStateException: Channel closed [channel=channel_nontx]
>       at 
> org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:351)
>       at 
> org.apache.flume.channel.BasicChannelSemantics.getTransaction(BasicChannelSemantics.java:122)
>       at 
> org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:181)
>       at 
> org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:179)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>       at 
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
>       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:679)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to