You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2008/01/10 19:21:52 UTC
svn commit: r610860 -
/lucene/java/branches/lucene_2_3/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java
Author: mikemccand
Date: Thu Jan 10 10:21:51 2008
New Revision: 610860
URL: http://svn.apache.org/viewvc?rev=610860&view=rev
Log:
LUCENE-1117 on 2.3 branch: fix EnwikiDocMaker to not hang when the producer thread hits exception
Modified:
lucene/java/branches/lucene_2_3/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java
Modified: lucene/java/branches/lucene_2_3/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_3/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java?rev=610860&r1=610859&r2=610860&view=diff
==============================================================================
--- lucene/java/branches/lucene_2_3/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java (original)
+++ lucene/java/branches/lucene_2_3/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/EnwikiDocMaker.java Thu Jan 10 10:21:51 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();