You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2017/11/07 02:06:46 UTC

jclouds git commit: JCLOUDS-1111: Overwrite objects via remove and put

Repository: jclouds
Updated Branches:
  refs/heads/master 343897d6d -> b2ced53e1


JCLOUDS-1111: Overwrite objects via remove and put

This partially reverts commit
e446b5b8b433327d8a11c0364abb051cff833431.  AT&T Synaptic returns a
bogus error on with x-emc-force-overwrite:

HTTP 400, code=1012, message=There was a mismatch between the object
size and the specified extent size.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/b2ced53e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b2ced53e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b2ced53e

Branch: refs/heads/master
Commit: b2ced53e165ecbea4188e2d2673a7ddb2f5a793d
Parents: 343897d
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Nov 6 17:43:12 2017 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Mon Nov 6 18:05:47 2017 -0800

----------------------------------------------------------------------
 .../java/org/jclouds/atmos/blobstore/AtmosBlobStore.java    | 1 -
 .../src/main/java/org/jclouds/atmos/options/PutOptions.java | 6 +++++-
 .../src/main/java/org/jclouds/atmos/util/AtmosUtils.java    | 9 ++++++++-
 3 files changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/b2ced53e/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
index f90deef..83079b3 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
@@ -267,7 +267,6 @@ public class AtmosBlobStore extends BaseBlobStore {
       if (options.getBlobAccess() == BlobAccess.PUBLIC_READ) {
          atmosOptions.publicRead();
       }
-      atmosOptions.overwrite();
       return AtmosUtils.putBlob(sync, crypto, blob2Object, container, blob, atmosOptions);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b2ced53e/apis/atmos/src/main/java/org/jclouds/atmos/options/PutOptions.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/options/PutOptions.java b/apis/atmos/src/main/java/org/jclouds/atmos/options/PutOptions.java
index 7811d84..a956d7d 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/options/PutOptions.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/options/PutOptions.java
@@ -53,7 +53,11 @@ public class PutOptions extends BaseHttpRequestOptions {
       return this;
    }
 
-   /** By default Atmos does not allow overwriting objects. */
+   /**
+    * By default Atmos does not allow overwriting objects.
+    *
+    * Note: older versions of Atmos do not support this header.
+    */
    public PutOptions overwrite() {
       this.replaceHeader("x-emc-force-overwrite", "true");
       return this;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b2ced53e/apis/atmos/src/main/java/org/jclouds/atmos/util/AtmosUtils.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/util/AtmosUtils.java b/apis/atmos/src/main/java/org/jclouds/atmos/util/AtmosUtils.java
index 790745c..660393a 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/util/AtmosUtils.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/util/AtmosUtils.java
@@ -33,6 +33,7 @@ import org.jclouds.atmos.options.PutOptions;
 import org.jclouds.atmos.reference.AtmosErrorCode;
 import org.jclouds.atmos.xml.ErrorHandler;
 import org.jclouds.blobstore.ContainerNotFoundException;
+import org.jclouds.blobstore.KeyAlreadyExistsException;
 import org.jclouds.blobstore.domain.Blob;
 import org.jclouds.crypto.Crypto;
 import org.jclouds.http.HttpCommand;
@@ -71,7 +72,13 @@ public class AtmosUtils {
             Blob blob, PutOptions options) {
       final String path = container + "/" + blob.getMetadata().getName();
       final AtmosObject object = blob2Object.apply(blob);
-      sync.createFile(container, object, options);
+
+      try {
+         sync.createFile(container, object, options);
+      } catch (KeyAlreadyExistsException e) {
+         deletePathAndEnsureGone(sync, path);
+         sync.createFile(container, object, options);
+      }
       return path;
    }