Uploaded image for project: 'jclouds'
  1. jclouds
  2. JCLOUDS-1626

`FileInputStream` leak when using `filesystem` provider and performing a multipart upload

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • None
    • None
    • jclouds-blobstore

    Description

      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.

               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);
               } 

      Attachments

        Activity

          People

            gaul Andrew Gaul
            jixinchi Ji Xinchi
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: