[
https://issues.apache.org/jira/browse/LUCENE-6151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14262182#comment-14262182
]
Uwe Schindler commented on LUCENE-6151:
---------------------------------------
bq. Please look at this one too:
https://bugs.openjdk.java.net/browse/JDK-8054565
Ah, I see. This is a sideeffect of the change they did in JDK8. close() is no
longer respecting contract (multiple closes not allowed). In fact we have to
fix our hack and make sure, flush() is not called if stream was already closed.
> Remove Java 7 close() hack in OutputStreamIndexOutput
> -----------------------------------------------------
>
> Key: LUCENE-6151
> URL: https://issues.apache.org/jira/browse/LUCENE-6151
> Project: Lucene - Core
> Issue Type: Task
> Affects Versions: Trunk
> Reporter: Uwe Schindler
> Fix For: Trunk
>
> Attachments: LUCENE-6151.patch
>
>
> In OutputStreamIndexOutput we have the following hack:
> {code:java}
> @Override
> public void close() throws IOException {
> try (final OutputStream o = os) {
> // We want to make sure that os.flush() was running before close:
> // BufferedOutputStream may ignore IOExceptions while flushing on
> close().
> // TODO: this is no longer an issue in Java 8:
> // http://hg.openjdk.java.net/jdk8/tl/jdk/rev/759aa847dcaf
> o.flush();
> }
> }
> {code}
> As we are on Java 8 already in trunk, we can remove this hack. The bug was
> fixed in Java 8, BufferedOutputStream / FilterOutputStream always calls
> flush() and close(), although an error happened!
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]