Gus Heck created SOLR-17392:
-------------------------------

             Summary: Reproducing failure in TestExportWriter (bits = null NPE)
                 Key: SOLR-17392
                 URL: https://issues.apache.org/jira/browse/SOLR-17392
             Project: Solr
          Issue Type: Bug
      Security Level: Public (Default Security Level. Issues are Public)
            Reporter: Gus Heck


While running the test suite locally I came across the NPE below. I notice that 
there are a couple other issues out there that hit NPE in BitSet<init> as well. 
There might be some need for static analysis to flag any case where the 
constructor might be passed a null bitset (The constructor calls .length() 
blindly on whatever is passed in)

  2> 4915 INFO  
(TEST-TestExportWriter.testRandomNumerics-seed#[4D8B4D17DC5E971F]) [n: c: s: r: 
x: t:] o.a.s.SolrTestCaseJ4 ###Ending testRandomNumerics
   >     java.io.IOException: java.lang.NullPointerException: Cannot invoke 
"org.apache.lucene.util.BitSet.length()" because "bits" is null
   >         at 
__randomizedtesting.SeedInfo.seed([4D8B4D17DC5E971F:7E9A173E1EE4C6F2]:0)
   >         at 
org.apache.solr.handler.export.ExportWriter$SegmentIterator.topDocs(ExportWriter.java:840)
   >         at 
org.apache.solr.handler.export.ExportWriter$SegmentIterator.<init>(ExportWriter.java:782)
   >         at 
org.apache.solr.handler.export.ExportWriter.getMergeIterator(ExportWriter.java:754)
   >         at 
org.apache.solr.handler.export.ExportBuffers.<init>(ExportBuffers.java:97)
   >         at 
org.apache.solr.handler.export.ExportWriter.writeDocs(ExportWriter.java:395)
   >         at 
org.apache.solr.handler.export.ExportWriter.lambda$_write$1(ExportWriter.java:344)
   >         at 
org.apache.solr.common.util.JsonTextWriter.writeIterator(JsonTextWriter.java:150)
   >         at 
org.apache.solr.common.util.TextWriter.writeIterator(TextWriter.java:260)
   >         at 
org.apache.solr.common.util.TextWriter.writeVal(TextWriter.java:86)
   >         at 
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:213)
   >         at 
org.apache.solr.common.util.TextWriter.writeVal(TextWriter.java:48)
   >         at 
org.apache.solr.common.util.JsonTextWriter$2.put(JsonTextWriter.java:187)
   >         at 
org.apache.solr.handler.export.ExportWriter.lambda$_write$2(ExportWriter.java:344)
   >         at 
org.apache.solr.common.util.JsonTextWriter.writeMap(JsonTextWriter.java:174)
   >         at 
org.apache.solr.common.util.TextWriter.writeMap(TextWriter.java:251)
   >         at 
org.apache.solr.common.util.TextWriter.writeVal(TextWriter.java:88)
   >         at 
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:213)
   >         at 
org.apache.solr.common.util.TextWriter.writeVal(TextWriter.java:48)
   >         at 
org.apache.solr.common.util.JsonTextWriter$2.put(JsonTextWriter.java:187)
   >         at 
org.apache.solr.handler.export.ExportWriter.lambda$_write$3(ExportWriter.java:339)
   >         at 
org.apache.solr.common.util.JsonTextWriter.writeMap(JsonTextWriter.java:174)
   >         at 
org.apache.solr.handler.export.ExportWriter._write(ExportWriter.java:336)
   >         at 
org.apache.solr.handler.export.ExportWriter.write(ExportWriter.java:195)
   >         at org.apache.solr.core.SolrCore$3.write(SolrCore.java:3045)
   >         at org.apache.solr.util.TestHarness.query(TestHarness.java:361)
   >         at org.apache.solr.util.TestHarness.query(TestHarness.java:333)
   >         at 
org.apache.solr.handler.export.TestExportWriter.doTestQuery(TestExportWriter.java:1483)
   >         at 
org.apache.solr.handler.export.TestExportWriter.testRandomNumerics(TestExportWriter.java:1108)
   >         at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   >         at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
   >         at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   >         at java.base/java.lang.reflect.Method.invoke(Method.java:569)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996)
   >         at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
   >         at org.junit.rules.RunRules.evaluate(RunRules.java:20)
   >         at 
org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
   >         at 
org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
   >         at 
org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
   >         at 
org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
   >         at 
org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
   >         at org.junit.rules.RunRules.evaluate(RunRules.java:20)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
   >         at 
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
   >         at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
   >         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
   >         at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
   >         at org.junit.rules.RunRules.evaluate(RunRules.java:20)
   >         at 
org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
   >         at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
   >         at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
   >         at 
org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
   >         at 
org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
   >         at 
org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
   >         at 
org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
   >         at org.junit.rules.RunRules.evaluate(RunRules.java:20)
   >         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
   >         at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
   >         at 
com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
   >         at java.base/java.lang.Thread.run(Thread.java:840)
   > 
   >         Caused by:
   >         java.lang.NullPointerException: Cannot invoke 
"org.apache.lucene.util.BitSet.length()" because "bits" is null
   >             at 
org.apache.lucene.util.BitSetIterator.<init>(BitSetIterator.java:63)
   >             at 
org.apache.solr.handler.export.ExportWriter$SegmentIterator.topDocs(ExportWriter.java:817)
   >             ... 73 more
  2> NOTE: reproduce with: gradlew test --tests 
TestExportWriter.testRandomNumerics -Dtests.seed=4D8B4D17DC5E971F 
-Dtests.locale=ak-GH -Dtests.timezone=Asia/Ulaanbaatar -Dtests.asserts=true 
-Dtests.file.encoding=UTF-8

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to