operations: fix incorrect modtime on some multipart transfers

In this commit

6a0a54ab97 operations: fix missing metadata for multipart transfers to local disk

We broke the setting of modification times when doing multipart
transfers from a backend which didn't support metadata to a backend
which did support metadata.

This was fixed by setting the "mtime" in the metadata if it was
missing.
This commit is contained in:
Nick Craig-Wood 2024-06-08 11:55:48 +01:00
parent 76798d5bb1
commit 57f5ad188b

View File

@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"io"
"time"
"github.com/rclone/rclone/fs"
"github.com/rclone/rclone/fs/accounting"
@ -253,6 +254,9 @@ func multiThreadCopy(ctx context.Context, f fs.Fs, remote string, src fs.Object,
if err != nil {
return nil, fmt.Errorf("multi-thread copy: failed to read metadata from source object: %w", err)
}
if _, foundMeta := meta["mtime"]; !foundMeta {
meta.Set("mtime", src.ModTime(ctx).Format(time.RFC3339Nano))
}
err = do.SetMetadata(ctx, meta)
if err != nil {
return nil, fmt.Errorf("multi-thread copy: failed to set metadata: %w", err)