[
https://issues.apache.org/jira/browse/COMPRESS-457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16526464#comment-16526464
]
Stefan Bodewig edited comment on COMPRESS-457 at 6/28/18 4:02 PM:
------------------------------------------------------------------
{quote}By the way "how to close the underlying stream even if there is an
error?"
{quote}
I'm not sure I understand what you are asking. If there is an underlying error
in the file system then there probably is no way of closing the underlying
stream at all. What I meant when I said "The thing that we might want to do is
modify {{close}} to close the underlying stream even if there is an error in
{{finish}}" applies only to cases where there is a logical error in {{finish}}
like when you forgot to write enough data to the entry (so closing the real
stream can actually work).
was (Author: bodewig):
> By the way "how to close the underlying stream even if there is an error?"
I'm not sure I understand what you are asking. If there is an underlying error
in the file system then there probably is no way of closing the underlying
stream at all. What I meant when I said "The thing that we might want to do is
modify {{close}} to close the underlying stream even if there is an error in
{{finish}}" applies only to cases where there is a logical error in {{finish}}
like when you forgot to write enough data to the entry (so closing the real
stream can actually work).
> When there is no space in the disk,the method closeArchiveEntry() cannot work
> -----------------------------------------------------------------------------
>
> Key: COMPRESS-457
> URL: https://issues.apache.org/jira/browse/COMPRESS-457
> Project: Commons Compress
> Issue Type: Improvement
> Components: Compressors
> Affects Versions: 1.16, 1.17
> Environment: all are environment can recurring this problems
> Reporter: zhangxinyue
> Priority: Minor
>
> When there is no space in the disk,I want to delete the Compressed half
> file, in my code,I close the archiveEntry use method closeArchiveEntry() of
> the TarArchiveOutputStream class,but because follow code
> fragments,closeArchiveEntry() is not work,I cannoot close io stream
> TarArchiveOutputStream,so that the tmp *.tar.gz cannot be delete.
> {code:java}
> // code placeholder
> public void closeArchiveEntry() throws IOException {
> if (this.finished) {
> throw new IOException("Stream has already been finished");
> } else if (!this.haveUnclosedEntry) {
> throw new IOException("No current entry to close");
> } else {
> this.out.flushBlock();
> if (this.currBytes < this.currSize) {
> throw new IOException("entry '" + this.currName + "' closed at '"
> + this.currBytes + "' before the '" + this.currSize + "' bytes specified in
> the header were written");
> } else {
> this.recordsWritten = (int)((long)this.recordsWritten +
> this.currSize / 512L);
> if (0L != this.currSize % 512L) {
> ++this.recordsWritten;
> }
> this.haveUnclosedEntry = false;
> }
> }
> }
> {code}
> I think this is a bug, when closeArchiveEntry() called,should not throw the
> follow IOException("entry '" + this.currName + "' closed at '" +
> this.currBytes + "' before the '" + this.currSize + "' bytes specified in the
> header were written").
> {code:java}
> // code placeholder
> if (this.currBytes < this.currSize)
> { throw new IOException("entry '" + this.currName + "' closed at '" +
> this.currBytes + "' before the '" + this.currSize + "' bytes specified in the
> header were written"); }
> {code}
>
> Please help, thk!!!
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)