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

TestManagedSchemaThreadSafety.testThreadSafety() failures

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 7.0
    • 6.5, 7.0
    • Schema and Analysis
    • None

    Description

      I set up a Jenkins job to hammer all tests on the jira/solr-5944 branch, and at least four times this test failed (none of the seeds reproduce for me): http://jenkins.sarowe.net/job/Solr-tests-SOLR-5944/155/, http://jenkins.sarowe.net/job/Solr-tests-SOLR-5944/167/, http://jenkins.sarowe.net/job/Solr-tests-SOLR-5944/106/, http://jenkins.sarowe.net/job/Solr-tests-SOLR-5944/332/. My email search didn't turn up any failures on ASF or Policeman Jenkins. Here's the output from one of the above runs:

         [junit4]   2> NOTE: reproduce with: ant test  -Dtestcase=TestManagedSchemaThreadSafety -Dtests.method=testThreadSafety -Dtests.seed=3DB2B79301AA806B -Dtests.slow=true -Dtests.locale=lt -Dtests.timezone=Asia/Anadyr -Dtests.asserts=true -Dtests.file.encoding=US-ASCII
         [junit4] ERROR   4.37s J4  | TestManagedSchemaThreadSafety.testThreadSafety <<<
         [junit4]    > Throwable #1: java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.apache.solr.common.SolrException: Error loading solr config from solrconfig.xml
         [junit4]    > 	at __randomizedtesting.SeedInfo.seed([3DB2B79301AA806B:A7F8A3CBD235329D]:0)
         [junit4]    > 	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
         [junit4]    > 	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
         [junit4]    > 	at org.apache.solr.schema.TestManagedSchemaThreadSafety.testThreadSafety(TestManagedSchemaThreadSafety.java:126)
         [junit4]    > 	at java.lang.Thread.run(Thread.java:745)
         [junit4]    > Caused by: java.lang.RuntimeException: org.apache.solr.common.SolrException: Error loading solr config from solrconfig.xml
         [junit4]    > 	at org.apache.solr.schema.TestManagedSchemaThreadSafety.lambda$indexSchemaLoader$0(TestManagedSchemaThreadSafety.java:159)
         [junit4]    > 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
         [junit4]    > 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
         [junit4]    > 	at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:229)
         [junit4]    > 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
         [junit4]    > 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
         [junit4]    > 	... 1 more
         [junit4]    > Caused by: org.apache.solr.common.SolrException: Error loading solr config from solrconfig.xml
         [junit4]    > 	at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:187)
         [junit4]    > 	at org.apache.solr.schema.TestManagedSchemaThreadSafety.lambda$indexSchemaLoader$0(TestManagedSchemaThreadSafety.java:152)
         [junit4]    > 	... 6 more
         [junit4]    > Caused by: java.lang.NullPointerException
         [junit4]    > 	at org.apache.solr.cloud.ZkSolrResourceLoader.openResource(ZkSolrResourceLoader.java:99)
         [junit4]    > 	at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:361)
         [junit4]    > 	at org.apache.solr.core.Config.<init>(Config.java:120)
         [junit4]    > 	at org.apache.solr.core.Config.<init>(Config.java:90)
         [junit4]    > 	at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:202)
         [junit4]    > 	at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:179)
         [junit4]    > 	... 7 more
      

      Looks to me like this is a test bug: the test mocks ZkController, but the mock returns null for (the uninitialized cc returned by) getCoreContainer(), which is called when the ZK session expires in ZkSolrResourceLoader.openResource(). The NPE is triggered when isShutdown() is called on the null core container:

      ZkSolrResourceLoader.java
       97: } catch (KeeperException.SessionExpiredException e) {
       98:   exception = e;
       99:   if (!zkController.getCoreContainer().isShutDown()) {
      100:     // Retry in case of session expiry
      

      Attachments

        1. SOLR-9983.patch
          5 kB
          Mikhail Khludnev
        2. tests-failures-TestManagedSchemaThreadSafety-724.txt
          23 kB
          Mikhail Khludnev
        3. SOLR-9983-connection-loss-retry.patch
          1 kB
          Mikhail Khludnev

        Issue Links

          Activity

            People

              mkhl Mikhail Khludnev
              sarowe Steven Rowe
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: