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

Sheung Chi Chan closed CODEC-319.
---------------------------------
    Resolution: Abandoned

> DeferredFileOutputStream does not delete the temporary file created
> -------------------------------------------------------------------
>
>                 Key: CODEC-319
>                 URL: https://issues.apache.org/jira/browse/CODEC-319
>             Project: Commons Codec
>          Issue Type: Improvement
>            Reporter: Sheung Chi Chan
>            Priority: Trivial
>
> The {{DeferredFileOutputStream}} class is a custom {{OutputStream}} object 
> from the Apache Commons IO library which will not write data directly to 
> disk. It will only write data to disk when the configured threshold is 
> reached. During the initialisation of the {{DeferredFileOutputStream}} object 
> through its builder class, the user could specify a custom file path or 
> provide a prefix and suffix for temporary file creation. The provided custom 
> file path or the temporary file created will be used for storing the data on 
> disk when the configured threshold is reached. When using the prefix/suffix 
> approach, the temporary file is created using the 
> {{java.nio.file.Files::createTempFile}} method only when the threshold is 
> reached. The temporary file created by the 
> {{java.nio.file.Files::createTempFile}} method will not be removed 
> automatically, thus when the stream is closed after the threshold is reached 
> and the prefix/suffix approach is used, there will be an unexpected file 
> stored in the disk persistently. Although it should not be accessible by 
> other users since the {{java.nio.file.Files::createTempFile}} method creates 
> a temporary file only for the current user to access, it still poses a 
> problem when the {{DeferredFileOutputStream}} object is being flooded with a 
> large amount of data. This could use up the disk space and cause possible 
> out-of-disk space problems.
> Although the flooding of data could also be a problem when using the 
> user-provided file, since it is the user who creates the file, thus the user 
> is responsible to remove or clean up that file when it is no longer used. But 
> if the prefix/suffix approach is used, the user does not have control of the 
> file and when the {{DeferredFileOutputStream}} is closed, it is assumed that 
> the temporary file created during the processing of 
> {{DeferredFileOutputStream}} is removed or cleaned up. It is a general 
> practice for Java OutputStream to clean up its process and temporary objects 
> when its close method is called. Thus the missing that could result in 
> unexpectedly large files staying in the disk unawared.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to