[ 
https://issues.apache.org/jira/browse/LUCENE-2972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13037629#comment-13037629
 ] 

Michael McCandless commented on LUCENE-2972:
--------------------------------------------

I just committed the fix:

{noformat}
Index: src/java/org/apache/lucene/search/FieldCacheTermsFilter.java
===================================================================
--- src/java/org/apache/lucene/search/FieldCacheTermsFilter.java        
(revision 1125975)
+++ src/java/org/apache/lucene/search/FieldCacheTermsFilter.java        
(working copy)
@@ -127,7 +127,7 @@
 
     public FieldCacheTermsFilterDocIdSet(FieldCache.DocTermsIndex fcsi) {
       this.fcsi = fcsi;
-      openBitSet = new OpenBitSet(this.fcsi.size());
+      openBitSet = new OpenBitSet(this.fcsi.numOrd());
       final BytesRef spare = new BytesRef();
       for (int i=0;i<terms.length;i++) {
         int termNumber = this.fcsi.binarySearchLookup(terms[i], spare);
{noformat}


We were using number-of-docs instead of number-of-ords to allocate the
OBS.  This only causes a problem if 1) every doc has a unique term
(thus number-of-ords is 1 + number-of-docs since 0 is reserved to mean
unset), and 2) the number of docs is 0 mod 64, because this would then
cause an AIOOBE coming out of the OBS (not the fcsi.getOrd!), which
the disi impl interprets as no-more-docs.  Phew!

I think likely we couldn't repro because ConccurrentMergeScheduler was
involved... this was able to repro for me:
{noformat}
ant test-core -Dtestcase=TestFieldCacheTermsFilter 
-Dtestmethod=testMissingTerms 
-Dtests.seed=-7172644887386150665:-4028247385708880228a
{noformat}

It uses SMS.

I'd like to add assertions to OBS to better catch bugs like this in
the future... I'll work up a patch.


> Intermittent failure in TestFieldCacheTermsFilter.testMissingTerms
> ------------------------------------------------------------------
>
>                 Key: LUCENE-2972
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2972
>             Project: Lucene - Java
>          Issue Type: Bug
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>             Fix For: 3.2, 4.0
>
>
> Running tests in while(1) I hit this:
> {noformat}
> NOTE: reproduce with: ant test -Dtestcase=TestFieldCacheTermsFilter 
> -Dtestmethod=testMissingTerms 
> -Dtests.seed=-1046382732738729184:5855929314778232889
> 1) testMissingTerms(org.apache.lucene.search.TestFieldCacheTermsFilter)
> java.lang.AssertionError: Must match 1 expected:<1> but was:<0>
>       at org.junit.Assert.fail(Assert.java:91)
>       at org.junit.Assert.failNotEquals(Assert.java:645)
>       at org.junit.Assert.assertEquals(Assert.java:126)
>       at org.junit.Assert.assertEquals(Assert.java:470)
>       at 
> org.apache.lucene.search.TestFieldCacheTermsFilter.testMissingTerms(TestFieldCacheTermsFilter.java:63)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>       at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
>       at 
> org.apache.lucene.util.LuceneTestCase$LuceneTestCaseRunner.runChild(LuceneTestCase.java:1214)
>       at 
> org.apache.lucene.util.LuceneTestCase$LuceneTestCaseRunner.runChild(LuceneTestCase.java:1146)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>       at org.junit.runners.Suite.runChild(Suite.java:128)
>       at org.junit.runners.Suite.runChild(Suite.java:24)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:136)
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
>       at org.junit.runner.JUnitCore.runMain(JUnitCore.java:98)
>       at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:53)
>       at org.junit.runner.JUnitCore.main(JUnitCore.java:45)
> {noformat}
> Unfortunately the seed doesn't [consistently] repro for me...

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

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

Reply via email to