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]

Reply via email to