fix: correctly rename cars on S3 type remotes #598
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
we previously probed Features().Move on the remote to determine renaming capability, this is wrong because it strictly checks for Mover property (which e.g. NFS supports but most cloud storages do not)
this resulted in just throwing up our hands when this check failed and leaving behind CARs that cannot be used for dealmaking (since they retrain the pre-commP uuid tmp names)
the correct check would have been https://pkg.go.dev/github.com/rclone/rclone/fs/operations#CanServerSideMove which returns true for S3 copy-and-delete "move" semantics
however, rclone also exposes an operation that does the move by the best means available, so we just use that (we can potentially add an explicit CanServerSideMove check to avoid falling back to download-rename-reupload degenerate case but that seems like a premature optimization)