[ 
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)

Reply via email to