Discussion:
Unit test failure
Ralph Goers
2014-10-19 02:33:37 UTC
Permalink
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.

Results :

Tests in error:
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification

Tests run: 743, Failures: 0, Errors: 1, Skipped: 29

Ralph
Ralph Goers
2014-10-19 04:55:22 UTC
Permalink
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.

"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Ralph Goers
2014-10-19 05:44:56 UTC
Permalink
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isn’t quire clear to me yet how.

Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Remko Popma
2014-10-19 05:51:13 UTC
Permalink
Shooting from the hip: is it an idea to create/register a dummy context on shutdown, to prevent a real one from being created? (I have not looked at the code; no idea if this would work in practice.)

Sent from my iPhone
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isnft quire clear to me yet how.
Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Ralph Goers
2014-10-19 05:57:59 UTC
Permalink
Yeah, that probably makes the most sense.

Ralph
Post by Remko Popma
Shooting from the hip: is it an idea to create/register a dummy context on shutdown, to prevent a real one from being created? (I have not looked at the code; no idea if this would work in practice.)
Sent from my iPhone
Post by Ralph Goers
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isn’t quire clear to me yet how.
Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Ralph Goers
2014-10-19 06:05:03 UTC
Permalink
Actually, we probably need a dummy contact factory on shutdown. It is getting late and I am going to bed. I'm not sure how much time I will spend on this tomorrow.

Sent from my iPad
Post by Ralph Goers
Yeah, that probably makes the most sense.
Ralph
Post by Remko Popma
Shooting from the hip: is it an idea to create/register a dummy context on shutdown, to prevent a real one from being created? (I have not looked at the code; no idea if this would work in practice.)
Sent from my iPhone
Post by Ralph Goers
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isn’t quire clear to me yet how.
Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Ralph Goers
2014-10-19 19:41:59 UTC
Permalink
The fix was actually simpler. I just moved the unregistering of MBeans to the first thing during shutdown of the LoggerContext. That way it is still valid should the JDK try to log.

Ralph
Post by Ralph Goers
Actually, we probably need a dummy contact factory on shutdown. It is getting late and I am going to bed. I'm not sure how much time I will spend on this tomorrow.
Sent from my iPad
Post by Ralph Goers
Yeah, that probably makes the most sense.
Ralph
Post by Remko Popma
Shooting from the hip: is it an idea to create/register a dummy context on shutdown, to prevent a real one from being created? (I have not looked at the code; no idea if this would work in practice.)
Sent from my iPhone
Post by Ralph Goers
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isn’t quire clear to me yet how.
Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Remko Popma
2014-10-19 21:53:19 UTC
Permalink
Nice!

Sent from my iPhone
Post by Ralph Goers
The fix was actually simpler. I just moved the unregistering of MBeans to the first thing during shutdown of the LoggerContext. That way it is still valid should the JDK try to log.
Ralph
Post by Ralph Goers
Actually, we probably need a dummy contact factory on shutdown. It is getting late and I am going to bed. I'm not sure how much time I will spend on this tomorrow.
Sent from my iPad
Post by Ralph Goers
Yeah, that probably makes the most sense.
Ralph
Post by Remko Popma
Shooting from the hip: is it an idea to create/register a dummy context on shutdown, to prevent a real one from being created? (I have not looked at the code; no idea if this would work in practice.)
Sent from my iPhone
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isnft quire clear to me yet how.
Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Ralph Goers
2014-10-19 23:48:33 UTC
Permalink
I have been able to do a build and build the site. I am not doing a build with -P apache-release to verify it builds the distribution properly. Once that is successful I will start the release.

Ralph
Post by Remko Popma
Nice!
Sent from my iPhone
Post by Ralph Goers
The fix was actually simpler. I just moved the unregistering of MBeans to the first thing during shutdown of the LoggerContext. That way it is still valid should the JDK try to log.
Ralph
Post by Ralph Goers
Actually, we probably need a dummy contact factory on shutdown. It is getting late and I am going to bed. I'm not sure how much time I will spend on this tomorrow.
Sent from my iPad
Post by Ralph Goers
Yeah, that probably makes the most sense.
Ralph
Post by Remko Popma
Shooting from the hip: is it an idea to create/register a dummy context on shutdown, to prevent a real one from being created? (I have not looked at the code; no idea if this would work in practice.)
Sent from my iPhone
Post by Ralph Goers
The LoggerContext has stopped. We then try to unregister MBeans. This calls java.util.logging, which in turn creates a new LoggerContext. It seems to me that we should be preventing this but it isn’t quire clear to me yet how.
Ralph
Post by Ralph Goers
OK. I fixed the unit test. No I am getting a unit test in log4j-jul to hang. It looks to me that JMX is trying to log using JUL which then routes to Log4j after Log4j has already shutdown.
"main" prio=5 tid=7fafbc001000 nid=0x103c0c000 in Object.wait() [103c0a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <7d8404f48> (a java.util.HashSet)
at java.lang.Object.wait(Object.java:485)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:392)
- locked <7d8404f48> (a java.util.HashSet)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:142)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:121)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:367)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:417)
- locked <7d85b6cf8> (a org.apache.logging.log4j.core.LoggerContext)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at org.apache.logging.log4j.jul.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:34)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at org.apache.logging.log4j.jul.LogManager.getLogger(LogManager.java:89)
at java.util.logging.LogManager.demandLogger(LogManager.java:369)
at java.util.logging.Logger.demandLogger(Logger.java:290)
at java.util.logging.Logger.getLogger(Logger.java:321)
- locked <7e0ac5608> (a java.lang.Class for java.util.logging.Logger)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:89)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.retrieve(Repository.java:487)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1087)
- locked <7d8404e68> (a com.sun.jmx.interceptor.DefaultMBeanServerInterceptor)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:516)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:312)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:231)
at org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:217)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:226)
at org.apache.logging.log4j.core.config.Configurator.shutdown(Configurator.java:173)
at org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:68)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Post by Ralph Goers
So I fixed the compilation errors. Now I get an error in one of the unit tests. I will have to look into this.
ShutdownCallbackRegistryTest.testShutdownCallbackRegistry:53 ? ConcurrentModification
Tests run: 743, Failures: 0, Errors: 1, Skipped: 29
Ralph
Loading...