logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edward Sargisson (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LOG4J2-278) Embedded Flume agent fails to rollback
Date Mon, 10 Jun 2013 22:16:20 GMT

     [ https://issues.apache.org/jira/browse/LOG4J2-278?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Edward Sargisson updated LOG4J2-278:
------------------------------------

    Attachment: flume-embedded-web-flume-2067.tar.gz
    
> Embedded Flume agent fails to rollback
> --------------------------------------
>
>                 Key: LOG4J2-278
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-278
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Flume Appender
>    Affects Versions: 2.0-beta7
>            Reporter: Edward Sargisson
>         Attachments: flume-embedded-web-flume-2067.tar.gz
>
>
> If the embedded Flume agent decides to rollback (for example, because the succeeding
node is full) then that rollback fails.
> Steps:
> 1. Setup a Flume agent as the succeeding agent and convince it to fill its queue. (In
my case, I can make it run out of memory then the queue fills which makes it refuse to accept
more messages.)
> 2. Extract the attached code (a very simple Jetty server) and modify the log4j2.xml to
have embedded=true for the FlumeAppender
> 3. Run the attached code
> Expected result:
> The embedded agent should queue messages.
> Actual result:
> 2013-06-10 14:39:11,173 ERROR An exception occurred processing Appender FlumeAppender
java.lang.IllegalStateException: rollback() called when transaction is COMPLETED! identityHashCode=1164913745
> 	at com.google.common.base.Preconditions.checkState(Preconditions.java:172)
> 	at org.apache.flume.channel.BasicTransactionSemantics.rollback(BasicTransactionSemantics.java:171)
> 	at org.apache.flume.channel.ChannelProcessor.processEvent(ChannelProcessor.java:269)
> 	at org.apache.logging.log4j.flume.appender.Log4jEventSource.send(Log4jEventSource.java:59)
> 	at org.apache.logging.log4j.flume.appender.FlumeEmbeddedManager.send(FlumeEmbeddedManager.java:123)
> 	at org.apache.logging.log4j.flume.appender.FlumeAppender.append(FlumeAppender.java:86)
> 	at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:102)
> 	at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:424)
> 	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:405)
> 	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:366)
> 	at org.apache.logging.log4j.core.Logger.log(Logger.java:110)
> 	at org.apache.logging.log4j.spi.AbstractLoggerWrapper.log(AbstractLoggerWrapper.java:55)
> 	at org.slf4j.impl.SLF4JLogger.debug(SLF4JLogger.java:139)
> 	at org.apache.flume.channel.file.Log.rollback(Log.java:566)
> 	at org.apache.flume.channel.file.FileChannel$FileBackedTransaction.doRollback(FileChannel.java:590)
> 	at org.apache.flume.channel.BasicTransactionSemantics.rollback(BasicTransactionSemantics.java:179)
> 	at org.apache.flume.sink.AvroSink.process(AvroSink.java:316)
> 	at org.apache.flume.sink.FailoverSinkProcessor.process(FailoverSinkProcessor.java:182)
> 	at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147)
> 	at java.lang.Thread.run(Thread.java:722)
> (note the identityHashCode is from my own modifications for debugging but does not affect
this repro).
> The problem is in org.apache.flume.channel.file.Log line 566 where, during a rollback,
it logs that it's rolling back. Flume transactions are held in a thread local. That transaction
is open, then the rollback is attempted, which hits Log line 566, so a log write is attempted,
which gets the same transaction, which is already open, which causes the exception.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message