Nice!

Sent from my iPhone

> On 2014/10/20, at 4:41, Ralph Goers <[email protected]> wrote:
> 
> 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
> 
>> On Oct 18, 2014, at 11:05 PM, Ralph Goers <[email protected]> wrote:
>> 
>> 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
>> 
>>> On Oct 18, 2014, at 10:57 PM, Ralph Goers <[email protected]> 
>>> wrote:
>>> 
>>> Yeah, that probably makes the most sense.
>>> 
>>> Ralph
>>> 
>>>> On Oct 18, 2014, at 10:51 PM, Remko Popma <[email protected]> wrote:
>>>> 
>>>> 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
>>>> 
>>>>> On 2014/10/19, at 14:44, Ralph Goers <[email protected]> wrote:
>>>>> 
>>>>> 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
>>>>> 
>>>>>> On Oct 18, 2014, at 9:55 PM, Ralph Goers <[email protected]> 
>>>>>> wrote:
>>>>>> 
>>>>>> 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)
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Oct 18, 2014, at 7:33 PM, Ralph Goers <[email protected]> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>> 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
> 

Reply via email to