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

Michael McCandless commented on LUCENE-4649:
--------------------------------------------

bq.  The official documentation explicitely mention that IO-related code that 
gets interrupted must throw java.io.InterruptedIOException which is exactly 
defined as we use it.

InterruptedIOException sounds great!

bq. The problem is that indexwriter relies upon certain types of exceptions 
(e.g. ThreadInterruptedException) instead of checking interrupt status?

+1 to just check the interrupted bit.

bq. Really as part of this issue we should re-enable mmap/niofs for 
TestIndexWriter.testThreadInterruptDeadlock() ?

+1

bq. this whole thing should act like IOUtils.close() and have a 'Exception 
priorException'.

+1

bq. We can check the interrupt bit to determine that we should not wait when 
calling finishMerges(), but thats it!

+1

I looked at the patch ... I don't like how we throw RuntimeException
on interrupt (I think that's worse than throwing
ThreadInterruptedException).  Maybe in those places we should instead add
"throws InterruptedException" to the method (eg NRTManager.close)?

                
> kill ThreadInterruptedException
> -------------------------------
>
>                 Key: LUCENE-4649
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4649
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Robert Muir
>         Attachments: LUCENE-4649_broken.patch, LUCENE-4649.patch
>
>
> the way we currently do this is bogus.
> For example in FSDirectory's fsync, i think we should instead:
> {noformat}
> } catch (InterruptedException ie) {
> - throw new ThreadInterruptedException(ie);
> + Thread.currentThread().interrupt(); // restore status
> + IOException e = new java.io.InterruptedIOException("fsync() interrupted");
> + e.initCause(ie);
> + throw e;
> {noformat}
> and crazy code in IndexWriter etc that catches ThreadInterruptedExc just to 
> restore status should be removed. 
> Instead the guy doing the catch (InterruptedException) should do the right 
> thing.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
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