Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-4557

Fix broken CoreContainerTest.testReload

    XMLWordPrintableJSON

Details

    • Test
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 4.2, 6.0
    • 4.3, 6.0
    • None
    • None

    Description

      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)

      Attachments

        1. SOLR-4557.patch
          20 kB
          Erick Erickson
        2. SOLR-4557_posthshutdown_stack.txt
          10 kB
          Chris M. Hostetter
        3. SOLR-4557.patch
          16 kB
          Erick Erickson

        Activity

          People

            erickerickson Erick Erickson
            erickerickson Erick Erickson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: