From 0663eb69ed6024e9426e9f737d28f19dfa0fd8bc Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 25 Oct 2023 14:30:56 -0700 Subject: [PATCH] fix: do not preserve mtime during CopyObject() metadata updates (#18316) mtime must be preserved only if destination mtime is set. fixes #18314 --- cmd/erasure-object.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmd/erasure-object.go b/cmd/erasure-object.go index f3f97a7b1..45d2822b9 100644 --- a/cmd/erasure-object.go +++ b/cmd/erasure-object.go @@ -132,15 +132,18 @@ func (er erasureObjects) CopyObject(ctx context.Context, srcBucket, srcObject, d versionID = mustGetUUID() fi.IsLatest = true // we are creating a new version so this is latest. } - modTime = UTCNow() } + modTime = UTCNow() // We only preserve modTime if dstOpts.MTime is true. + // in all other cases mtime is latest. + fi.VersionID = versionID // set any new versionID we might have created fi.ModTime = modTime // set modTime for the new versionID if !dstOpts.MTime.IsZero() { modTime = dstOpts.MTime fi.ModTime = dstOpts.MTime } + fi.Metadata = srcInfo.UserDefined srcInfo.UserDefined["etag"] = srcInfo.ETag