fix: do not preserve mtime during CopyObject() metadata updates (#18316)

mtime must be preserved only if destination mtime is set.

fixes #18314
This commit is contained in:
Harshavardhana 2023-10-25 14:30:56 -07:00 committed by GitHub
parent 0594d37230
commit 0663eb69ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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