Mike, do you want to merge this into the 2.3 branch before I build RC2?
-Michael [EMAIL PROTECTED] wrote: > Author: mikemccand > Date: Thu Jan 10 02:12:18 2008 > New Revision: 610738 > > URL: http://svn.apache.org/viewvc?rev=610738&view=rev > Log: > LUCENE-1117: fix EnwikiDocMaker to not hang when the producer thread hits > exception > > Modified: > > lucene/java/trunk/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java > > Modified: > lucene/java/trunk/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java > URL: > http://svn.apache.org/viewvc/lucene/java/trunk/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java?rev=610738&r1=610737&r2=610738&view=diff > ============================================================================== > --- > lucene/java/trunk/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java > (original) > +++ > lucene/java/trunk/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java > Thu Jan 10 02:12:18 2008 > @@ -47,6 +47,7 @@ > class Parser extends DefaultHandler implements Runnable { > > Thread t; > + boolean threadDone; > > public void run() { > > @@ -86,8 +87,12 @@ > throw new RuntimeException(sae); > } catch (IOException ioe) { > throw new RuntimeException(ioe); > + } finally { > + synchronized(this) { > + threadDone = true; > + notify(); > + } > } > - > } > > String[] tuple; > @@ -95,13 +100,14 @@ > > String[] next() throws NoMoreDataException { > if (t == null) { > + threadDone = false; > t = new Thread(this); > t.setDaemon(true); > t.start(); > } > String[] result; > synchronized(this){ > - while(tuple == null && nmde == null){ > + while(tuple == null && nmde == null && !threadDone) { > try { > wait(); > } catch (InterruptedException ie) { > @@ -113,6 +119,12 @@ > t = null; > throw nmde; > } > + if (t != null && threadDone) > + // The thread has exited yet did not hit end of > + // data, so this means it hit an exception. We > + // throw NoMorDataException here to force > + // benchmark to stop the current alg: > + throw new NoMoreDataException(); > result = tuple; > tuple = null; > notify(); > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]