aboutsummaryrefslogtreecommitdiffstats
path: root/drive
diff options
context:
space:
mode:
authorPetter Rasmussen2016-02-07 22:14:23 +0100
committerPetter Rasmussen2016-02-07 22:14:23 +0100
commit23919aa1adfc693b45a292c449418ee78d744df0 (patch)
tree69ca3ce570db110dad031a30f94fca3056cb5706 /drive
parentb56ee90075d3b073bd87e5527528b62f85ef031e (diff)
downloadgdrive-23919aa1adfc693b45a292c449418ee78d744df0.tar.bz2
Retry delete file on backend error
Diffstat (limited to 'drive')
-rw-r--r--drive/sync_upload.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/drive/sync_upload.go b/drive/sync_upload.go
index 15a0327..f5bc48b 100644
--- a/drive/sync_upload.go
+++ b/drive/sync_upload.go
@@ -236,7 +236,7 @@ func (self *Drive) deleteExtraneousRemoteFiles(files *syncFiles, args UploadSync
continue
}
- err := self.deleteRemoteFile(rf, args)
+ err := self.deleteRemoteFile(rf, args, 0)
if err != nil {
return err
}
@@ -339,10 +339,16 @@ func (self *Drive) updateChangedFile(cf *changedFile, args UploadSyncArgs, try i
return nil
}
-func (self *Drive) deleteRemoteFile(rf *RemoteFile, args UploadSyncArgs) error {
+func (self *Drive) deleteRemoteFile(rf *RemoteFile, args UploadSyncArgs, try int) error {
err := self.service.Files.Delete(rf.file.Id).Do()
if err != nil {
- return fmt.Errorf("Failed to delete file: %s", err)
+ if isBackendError(err) && try < MaxBackendErrorRetries {
+ exponentialBackoffSleep(try)
+ try++
+ self.deleteRemoteFile(rf, args, try)
+ } else {
+ return fmt.Errorf("Failed to delete file: %s", err)
+ }
}
return nil