[ 
https://issues.apache.org/jira/browse/JCLOUDS-1626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17822884#comment-17822884
 ] 

ASF subversion and git services commented on JCLOUDS-1626:
----------------------------------------------------------

Commit 4c7fb2c8b9f36207cd0b04f6266521412e6678f3 in jclouds's branch 
refs/heads/master from Andrew Gaul
[ https://gitbox.apache.org/repos/asf?p=jclouds.git;h=4c7fb2c8b9 ]

JCLOUDS-1626: Close stream in MultiBlobInputStream

Otherwise the inner FileInputStream will leak if the caller only reads
part of the stream before closing the outer MultiBlobInputStream.


> `FileInputStream` leak when using `filesystem` provider and performing a 
> multipart upload
> -----------------------------------------------------------------------------------------
>
>                 Key: JCLOUDS-1626
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1626
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-blobstore
>            Reporter: Ji Xinchi
>            Priority: Critical
>              Labels: filesystem
>
> I'm using gaul/s3proxy built on the latest jclouds. The provider 
> configuration is "filesystem", and basedir configuration is a directory where 
> a NFS is mounted.
>  
> When I performed a multipart upload, I found that files such as 
> ".nfs00000000100000bf00000005" remained in the directory after uploading. 
> Each file corresponded to one part and the files could not be deleted. The 
> error "Device Busy" was reported. These files will disappear automatically 
> after restarting s3proxy.
>  
> I found this PR, and tried to restore following snippet and it worked. But 
> this is just a temporary fix.
> {code:java}
>          InputStream is = blob.getPayload().openStream();
>          if (is instanceof FileInputStream) {
>             // except for FileInputStream since large MPU can open too many 
> fds
>             is.close();
>             payload = blob.getPayload();
>          } else {
>             blob.resetPayload(/*release=*/ false);
>             payload = new InputStreamPayload(is);
>          } {code}



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

Reply via email to