[ 
https://issues.apache.org/jira/browse/COMPRESS-457?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

zhangxinyue updated COMPRESS-457:
---------------------------------
    Description: 
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 the  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!!!

  was:
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, I think this 
is a bug, when closeArchiveEntry() called,should not throw the follow the  
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!!!


> 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: Bug
>          Components: Compressors
>    Affects Versions: 1.16, 1.17
>         Environment: all are environment can recurring this problems
>            Reporter: zhangxinyue
>            Priority: Major
>
> 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 the  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