From 7aaf01eb74e25f16db3707b24bbbf58522301fba Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 9 Mar 2018 10:50:39 -0800 Subject: [PATCH] Save ETag when updating metadata (#5626) Fixes #5622 --- cmd/fs-v1.go | 1 + cmd/object-handlers.go | 3 --- cmd/xl-v1-object.go | 1 + 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/cmd/fs-v1.go b/cmd/fs-v1.go index dd7adde63..594113123 100644 --- a/cmd/fs-v1.go +++ b/cmd/fs-v1.go @@ -403,6 +403,7 @@ func (fs *FSObjects) CopyObject(srcBucket, srcObject, dstBucket, dstObject strin } fsMeta.Meta = srcInfo.UserDefined + fsMeta.Meta["etag"] = srcInfo.ETag if _, err = fsMeta.WriteTo(wlk); err != nil { return oi, toObjectErr(err, srcBucket, srcObject) } diff --git a/cmd/object-handlers.go b/cmd/object-handlers.go index 39286cf96..3936c771d 100644 --- a/cmd/object-handlers.go +++ b/cmd/object-handlers.go @@ -483,9 +483,6 @@ func (api objectAPIHandlers) CopyObjectHandler(w http.ResponseWriter, r *http.Re srcInfo.UserDefined[k] = v } - // Make sure to remove saved etag if any, CopyObject calculates a new one. - delete(srcInfo.UserDefined, "etag") - // Check if x-amz-metadata-directive was not set to REPLACE and source, // desination are same objects. Apply this restriction also when // metadataOnly is true indicating that we are not overwriting the object. diff --git a/cmd/xl-v1-object.go b/cmd/xl-v1-object.go index c623efc42..fcb619116 100644 --- a/cmd/xl-v1-object.go +++ b/cmd/xl-v1-object.go @@ -114,6 +114,7 @@ func (xl xlObjects) CopyObject(srcBucket, srcObject, dstBucket, dstObject string // Update `xl.json` content on each disks. for index := range metaArr { metaArr[index].Meta = srcInfo.UserDefined + metaArr[index].Meta["etag"] = srcInfo.ETag } var onlineDisks []StorageAPI