From 4b9da601be9422382aaa41c08d6b7eb601c95658 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Wed, 8 Jan 2020 12:57:21 +0000 Subject: [PATCH] dropbox: treat insufficient_space errors as non retriable errors Before this change rclone would keep trying to upload files after dropbox had signalled it was full. This change makes the relevant error a non-retriable error. See: https://forum.rclone.org/t/why-does-a-file-transfer-continue-when-there-is-no-available-storage/13677 --- backend/dropbox/dropbox.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/dropbox/dropbox.go b/backend/dropbox/dropbox.go index e39fa44b2..f30205bed 100644 --- a/backend/dropbox/dropbox.go +++ b/backend/dropbox/dropbox.go @@ -1123,6 +1123,13 @@ func (o *Object) uploadChunked(in0 io.Reader, commitInfo *files.CommitInfo, size return false, nil } entry, err = o.fs.srv.UploadSessionFinish(args, chunk) + // If error is insufficient space then don't retry + if e, ok := err.(files.UploadSessionFinishAPIError); ok { + if e.EndpointError != nil && e.EndpointError.Path != nil && e.EndpointError.Path.Tag == files.WriteErrorInsufficientSpace { + err = fserrors.NoRetryError(err) + return false, err + } + } // after the first chunk is uploaded, we retry everything return err != nil, err })