From a67c7461eef5de42f5c68653f41ed03bc760c62c Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sun, 19 Jun 2016 17:26:44 +0100 Subject: [PATCH] s3: skip SetModTime for objects > 5GB - fixes #534 --- s3/s3.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/s3/s3.go b/s3/s3.go index 14542e822..b6cf0aff2 100644 --- a/s3/s3.go +++ b/s3/s3.go @@ -150,9 +150,10 @@ func init() { // Constants const ( - metaMtime = "Mtime" // the meta key to store mtime in - eg X-Amz-Meta-Mtime - listChunkSize = 1024 // number of items to read at once - maxRetries = 10 // number of retries to make of operations + metaMtime = "Mtime" // the meta key to store mtime in - eg X-Amz-Meta-Mtime + listChunkSize = 1024 // number of items to read at once + maxRetries = 10 // number of retries to make of operations + maxSizeForCopy = 5 * 1024 * 1024 * 1024 // The maximum size of object we can COPY ) // Fs represents a remote s3 server @@ -751,6 +752,11 @@ func (o *Object) SetModTime(modTime time.Time) error { } o.meta[metaMtime] = aws.String(swift.TimeToFloatString(modTime)) + if o.bytes >= maxSizeForCopy { + fs.Debug(o, "SetModTime is unsupported for objects bigger than %v bytes", fs.SizeSuffix(maxSizeForCopy)) + return nil + } + // Guess the content type contentType := fs.MimeType(o)