Erick Erickson created SOLR-4557:
------------------------------------

             Summary: Fix broken CoreContainerTest.testReload
                 Key: SOLR-4557
                 URL: https://issues.apache.org/jira/browse/SOLR-4557
             Project: Solr
          Issue Type: Test
    Affects Versions: 4.2, 5.0
            Reporter: Erick Erickson
            Assignee: Erick Erickson


I was chasing down a test failure, and it turns out that 
CoreContainerTest.testReload has only succeeded by chance. The test fires up 4 
threads that go out and reload the same core all at once. This caused me to 
look at properly synchronizing reloading cores pursuant to SOLR-4196, on the 
theory that we should serialize loading, unloading and reloading cores; we 
shouldn't be doing _any_ of those operations from different threads on the same 
core at the same time. It turns out that if you fire up multiple reloads at 
once without serializing them, an error is thrown instead of proper reloading 
occurring, and that's the only reason the test doesn't hang. The stack trace of 
the exception is below for reference, but it doesn't with the code I'll attach 
to this patch:

[junit4:junit4]   2>    at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095)
[junit4:junit4]   2>    at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:427)
[junit4:junit4]   2>    at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:415)
[junit4:junit4]   2>    at 
com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:536)
[junit4:junit4]   2>    at 
org.apache.solr.core.JmxMonitoredMap.put(JmxMonitoredMap.java:138)
[junit4:junit4]   2>    at 
org.apache.solr.core.JmxMonitoredMap.put(JmxMonitoredMap.java:51)
[junit4:junit4]   2>    at 
org.apache.solr.core.RequestHandlers.register(RequestHandlers.java:106)
[junit4:junit4]   2>    at 
org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:157)
[junit4:junit4]   2>    at 
org.apache.solr.core.SolrCore.<init>(SolrCore.java:757)
[junit4:junit4]   2>    at 
org.apache.solr.core.SolrCore.reload(SolrCore.java:408)
[junit4:junit4]   2>    at 
org.apache.solr.core.CoreContainer.reload(CoreContainer.java:1076)
[junit4:junit4]   2>    at 
org.apache.solr.core.TestCoreContainer$1TestThread.run(TestCoreContainer.java:90)


--
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to