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

TestManagedSchemaThreadSafety.testThreadSafety() failures

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 7.0
    • Fix Version/s: 6.5, 7.0
    • Component/s: Schema and Analysis
    • Security Level: Public (Default Security Level. Issues are Public)
    • Labels:
      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-connection-loss-retry.patch
          1 kB
          Mikhail Khludnev
        2. tests-failures-TestManagedSchemaThreadSafety-724.txt
          23 kB
          Mikhail Khludnev
        3. SOLR-9983.patch
          5 kB
          Mikhail Khludnev

          Issue Links

            Activity

              People

              • Assignee:
                mkhludnev Mikhail Khludnev
                Reporter:
                steve_rowe Steve Rowe
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: