[
https://issues.apache.org/jira/browse/LOG4J2-807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14118227#comment-14118227
]
Florin Marinoiu commented on LOG4J2-807:
----------------------------------------
Looks like {code}AsyncLoggerConfigHelper#release(){code} is called after
{code}AsyncLoggerConfigHelper#claim()/initDisruptor(){code}
> Disruptor is null when configuration is reloaded (asyncRoot + monitorInterval)
> ------------------------------------------------------------------------------
>
> Key: LOG4J2-807
> URL: https://issues.apache.org/jira/browse/LOG4J2-807
> Project: Log4j 2
> Issue Type: Bug
> Affects Versions: 2.0.2
> Reporter: Florin Marinoiu
> Attachments: async-root-reload - trace.log,
> async-root-reload-test.zip, async-root-reload.log
>
>
> We have a XML configuration with <asyncRoot> and monitorInterval. When the
> configuration file is reloaded I have a NPE and log4j become unavailable:
> {code}
> 2014-08-29 10:39:59,079 ERROR Could not register mbeans
> java.lang.NullPointerException
> at
> org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper.createRingBufferAdmin(AsyncLoggerConfigHelper.java:360)
> at
> org.apache.logging.log4j.core.async.AsyncLoggerConfig.createRingBufferAdmin(AsyncLoggerConfig.java:148)
> {code}
> Here is my config:
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration name="asynRootConfig" monitorInterval="5" status="debug">
> <Appenders>
> <RandomAccessFile name="FILE_APPENDER" fileName="application.log"
> immediateFlush="false" append="true">
> <PatternLayout>
> <Pattern>%d %-5p [%c{1.}] %m%n</Pattern>
> </PatternLayout>
> </RandomAccessFile>
> </Appenders>
> <Loggers>
> <asyncRoot level="debug">
> <AppenderRef ref="FILE_APPENDER" />
> </asyncRoot>
> </Loggers>
> </Configuration>
> {code}
> And a code snippet to reproduce:
> {code}
> public class Log4jAsyncRootReloadTest {
> public static void main(String[] args) throws InterruptedException {
> final File config = new File("./log4j2.xml");
> System.setProperty("log4j.configurationFile", "file://" +
> config.getAbsolutePath().replaceAll("\\\\", "/"));
> Logger logger = LogManager.getLogger(Log4jAsyncRootReloadTest.class);
> logger.info("Log4j configured, will be reconfigured in aprox. 5 sec");
> config.setLastModified(System.currentTimeMillis());
> for (int i = 0; i < 10; i++) {
> Thread.sleep(1000);
> logger.info("Log4j waiting for reconfiguration");
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]