You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Stefan Bodewig (JIRA)" <ji...@apache.org> on 2018/06/28 16:03:00 UTC

[jira] [Comment Edited] (COMPRESS-457) When there is no space in the disk,the method closeArchiveEntry() cannot work

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