Michael McCandless created LUCENE-6120:
------------------------------------------

             Summary: how should MockIndexOutputWrapper.close handle exceptions 
in delegate.close
                 Key: LUCENE-6120
                 URL: https://issues.apache.org/jira/browse/LUCENE-6120
             Project: Lucene - Core
          Issue Type: Bug
          Components: core/store
            Reporter: Michael McCandless
            Priority: Minor


Chasing a tricking Elasticsearch test failure, it came down to the 
delegate.close throwing an exception (ClosedByInterruptException, disturbingly, 
in this case), causing MockIndexOutputWrapper.close to fail to remove that IO 
from MDW's map.

The question is, what should we do here, when delegate.close throws an 
exception?  Is the delegate in fact closed, even when it throws an exception?  

Java8's docs on java.io.Closeable say this:

As noted in AutoCloseable.close(), cases where the close may fail require 
careful attention. It is strongly advised to relinquish the underlying 
resources and to internally mark the Closeable as closed, prior to throwing the 
IOException.

And our OutputStreamIndexOutput is careful about this (flushes, then closes in 
a try-with-resources).

So, I think MDW should be fixed to mark the IO as closed even if delegate.close 
throws an exception...



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to