Have not looked into this, but as far as I know it the printout *before* the
check for the other thread's exception status in teardown.

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: [email protected]


> -----Original Message-----
> From: Michael McCandless [mailto:[email protected]]
> Sent: Thursday, December 09, 2010 5:06 PM
> To: [email protected]
> Subject: Re: TestSearchWithThreads failure
> 
> On Thu, Dec 9, 2010 at 10:32 AM, Shai Erera <[email protected]> wrote:
> > Hi
> >
> > I've hit this:
> >
> >     [junit] Testsuite: org.apache.lucene.search.TestSearchWithThreads
> >     [junit] Testcase:
> > test(org.apache.lucene.search.TestSearchWithThreads):     FAILED
> >     [junit] Some threads threw uncaught exceptions!
> >     [junit] junit.framework.AssertionFailedError: Some threads threw
> > uncaught exceptions!
> >     [junit]     at
> >
> org.apache.lucene.util.LuceneTestCase$LuceneTestCaseRunner.runChild(Lu
> > ceneTestCase.java:1039)
> >     [junit]     at
> >
> org.apache.lucene.util.LuceneTestCase$LuceneTestCaseRunner.runChild(Lu
> > ceneTestCase.java:977)
> >     [junit]     at
> >
> org.apache.lucene.util.LuceneTestCase.tearDown(LuceneTestCase.java:478
> > )
> >     [junit]
> >     [junit]
> >     [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 1.487
> > sec
> >     [junit]
> >     [junit] ------------- Standard Error -----------------
> >     [junit] The following exceptions were thrown by threads:
> >     [junit] *** Thread: Thread-98 ***
> >     [junit] java.lang.AssertionError:
> >     [junit]     at org.junit.Assert.fail(Assert.java:91)
> >     [junit]     at org.junit.Assert.assertTrue(Assert.java:43)
> >     [junit]     at org.junit.Assert.assertTrue(Assert.java:55)
> >     [junit]     at
> >
> org.apache.lucene.search.TestSearchWithThreads$1.run(TestSearchWithThr
> > eads.java:88)
> >     [junit] *** Thread: Thread-100 ***
> >     [junit] java.lang.AssertionError:
> >     [junit]     at org.junit.Assert.fail(Assert.java:91)
> >     [junit]     at org.junit.Assert.assertTrue(Assert.java:43)
> >     [junit]     at org.junit.Assert.assertTrue(Assert.java:55)
> >     [junit]     at
> >
> org.apache.lucene.search.TestSearchWithThreads$1.run(TestSearchWithThr
> > eads.java:88)
> >     [junit] ------------- ---------------- ---------------
> >     [junit] TEST org.apache.lucene.search.TestSearchWithThreads FAILED
> >
> > No 'reproduce' command, and I ran the test alone as well as test-core
> > multiple times since and wasn't able to reproduce since.
> 
> Hmm why no repro command?  That's no good.  Maybe if a test fails only due
> to threads other than main, we fail to print repro?
> 
> > The failure is on this line: assertTrue(totHits > 0);
> >
> > Looking in the code, there are two possible causes I can think of:
> >
> > 1) The while() loop isn't executed because the machine hiccup or
> > something and stopAt reached before reaching while() ... or failed.get()
is
> true.
> > --> we need to fix the assert in any case I think, to assert
> > --> !failed.get()
> > && totalHits > 0 ... otherwise it will fail, potentially masking the
> > original failure.
> > --> we need to set a boolean inside the loop, e.g. "ran=true" and
> > incorporate that in the assert.
> 
> Good, I agree!  And I think also change assert to tolerate numSearch == 0?
Ie
> it's fine if there are no hits if no searches succeeded in running...
> 
> You wanna fix?
> 
> >
> > 2) The test uses the new TotalHitCountCollector, and perhaps uncovers
> > a bug
> > --- I think it's not very likely.
> >
> > Also, I'd change the test to first create the array of threads, then
> > compute stopAt and then start() all of them. Currently, the test
> > spends time constructing a Thread object, and the last thread
> > accumulates that time and doesn't have much time left to actually run.
> 
> Good!  Poor, starving threads....
> 
> Mike
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected] For additional
> commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to