[jira] [Updated] (OAK-6707) TarWriter.close() must not throw an exception on subsequent invocations
[ https://issues.apache.org/jira/browse/OAK-6707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Dürig updated OAK-6707: --- Fix Version/s: 1.9.0 > TarWriter.close() must not throw an exception on subsequent invocations > --- > > Key: OAK-6707 > URL: https://issues.apache.org/jira/browse/OAK-6707 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segment-tar >Reporter: Michael Dürig >Priority: Minor > Labels: technical_debt > Fix For: 1.9.0, 1.10 > > > Invoking TarWriter.close() on an already closed writer throws an {{ISE}}. > According to the general contract this is not allowed: > {code} > * Closes this stream and releases any system resources associated > * with it. If the stream is already closed then invoking this > * method has no effect. > {code} > We should adjust the behvaviour of that method accordingly. > Failing to comply with that general contract causes {{TarWriter}} instances > to fail in try-resource statements when multiple wrapped streams are involved. > Consider > {code} > try ( > StringWriter string = new StringWriter(); > PrintWriter writer = new PrintWriter(string); > WriterOutputStream out = new WriterOutputStream(writer, Charsets.UTF_8)) > { > dumpHeader(out); > writer.println(""); > dumpHex(out); > writer.println(""); > return string.toString(); > } > {code} > This code would cause exceptions to be thrown if e.g. the > {{PrintWriter.close}} method would not be idempotent. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (OAK-6707) TarWriter.close() must not throw an exception on subsequent invocations
[ https://issues.apache.org/jira/browse/OAK-6707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Dürig updated OAK-6707: --- Labels: technical_debt (was: ) > TarWriter.close() must not throw an exception on subsequent invocations > --- > > Key: OAK-6707 > URL: https://issues.apache.org/jira/browse/OAK-6707 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segment-tar >Reporter: Michael Dürig >Priority: Minor > Labels: technical_debt > Fix For: 1.10 > > > Invoking TarWriter.close() on an already closed writer throws an {{ISE}}. > According to the general contract this is not allowed: > {code} > * Closes this stream and releases any system resources associated > * with it. If the stream is already closed then invoking this > * method has no effect. > {code} > We should adjust the behvaviour of that method accordingly. > Failing to comply with that general contract causes {{TarWriter}} instances > to fail in try-resource statements when multiple wrapped streams are involved. > Consider > {code} > try ( > StringWriter string = new StringWriter(); > PrintWriter writer = new PrintWriter(string); > WriterOutputStream out = new WriterOutputStream(writer, Charsets.UTF_8)) > { > dumpHeader(out); > writer.println(""); > dumpHex(out); > writer.println(""); > return string.toString(); > } > {code} > This code would cause exceptions to be thrown if e.g. the > {{PrintWriter.close}} method would not be idempotent. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (OAK-6707) TarWriter.close() must not throw an exception on subsequent invocations
[ https://issues.apache.org/jira/browse/OAK-6707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Dürig updated OAK-6707: --- Fix Version/s: 1.10 > TarWriter.close() must not throw an exception on subsequent invocations > --- > > Key: OAK-6707 > URL: https://issues.apache.org/jira/browse/OAK-6707 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segment-tar >Reporter: Michael Dürig >Priority: Minor > Fix For: 1.10 > > > Invoking TarWriter.close() on an already closed writer throws an {{ISE}}. > According to the general contract this is not allowed: > {code} > * Closes this stream and releases any system resources associated > * with it. If the stream is already closed then invoking this > * method has no effect. > {code} > We should adjust the behvaviour of that method accordingly. > Failing to comply with that general contract causes {{TarWriter}} instances > to fail in try-resource statements when multiple wrapped streams are involved. > Consider > {code} > try ( > StringWriter string = new StringWriter(); > PrintWriter writer = new PrintWriter(string); > WriterOutputStream out = new WriterOutputStream(writer, Charsets.UTF_8)) > { > dumpHeader(out); > writer.println(""); > dumpHex(out); > writer.println(""); > return string.toString(); > } > {code} > This code would cause exceptions to be thrown if e.g. the > {{PrintWriter.close}} method would not be idempotent. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (OAK-6707) TarWriter.close() must not throw an exception on subsequent invocations
[ https://issues.apache.org/jira/browse/OAK-6707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Dürig updated OAK-6707: --- Fix Version/s: (was: 1.8) > TarWriter.close() must not throw an exception on subsequent invocations > --- > > Key: OAK-6707 > URL: https://issues.apache.org/jira/browse/OAK-6707 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segment-tar >Reporter: Michael Dürig >Priority: Minor > > Invoking TarWriter.close() on an already closed writer throws an {{ISE}}. > According to the general contract this is not allowed: > {code} > * Closes this stream and releases any system resources associated > * with it. If the stream is already closed then invoking this > * method has no effect. > {code} > We should adjust the behvaviour of that method accordingly. > Failing to comply with that general contract causes {{TarWriter}} instances > to fail in try-resource statements when multiple wrapped streams are involved. > Consider > {code} > try ( > StringWriter string = new StringWriter(); > PrintWriter writer = new PrintWriter(string); > WriterOutputStream out = new WriterOutputStream(writer, Charsets.UTF_8)) > { > dumpHeader(out); > writer.println(""); > dumpHex(out); > writer.println(""); > return string.toString(); > } > {code} > This code would cause exceptions to be thrown if e.g. the > {{PrintWriter.close}} method would not be idempotent. -- This message was sent by Atlassian JIRA (v6.4.14#64029)