You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2015/11/20 23:47:11 UTC

[jira] [Commented] (JCLOUDS-835) filesystem blobstore does not atomically replace objects

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

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

Commit f706d9c13a78f360d5e0c94c74251a892ce0e66e in jclouds's branch refs/heads/master from [~gaul]
[ https://git-wip-us.apache.org/repos/asf?p=jclouds.git;h=f706d9c ]

JCLOUDS-835: Atomically put filesystem blobs

Write to a temporary file and rename to the desired destination to
better match object store semantics.


> filesystem blobstore does not atomically replace objects
> --------------------------------------------------------
>
>                 Key: JCLOUDS-835
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-835
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-blobstore
>    Affects Versions: 1.8.1
>            Reporter: Andrew Gaul
>              Labels: filesystem
>             Fix For: 2.0.0
>
>
> Object stores have atomic replacement of keys, i.e., a mutating operation like write or overwrite should succeed and expose the new object or fail and retain the old object.  The filesystem blobstore does neither of these and also has issues when handling simultaneous writes.  From {{FilesystemStorageStrategyImpl.putBlob}}:
> {code:java}
> try {
>    outputFile.delete();
>    Files.asByteSink(outputFile).writeFrom(his);
>    ...
> } catch (IOException ex) {
>    if (outputFile != null) {
>       if (!outputFile.delete()) {
>          logger.debug("Could not delete %s", outputFile);
>       }
>    }
>    throw ex;
> }
> {code}
> Instead we should write to a temporary file and rename on top of the target object.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)