diff options
| author | Petter Rasmussen | 2016-02-07 22:11:28 +0100 | 
|---|---|---|
| committer | Petter Rasmussen | 2016-02-07 22:11:28 +0100 | 
| commit | b56ee90075d3b073bd87e5527528b62f85ef031e (patch) | |
| tree | b78a5af13370d8d243d40fc1058ead5681a548a6 | |
| parent | 6199148887e51431f3479cce4f7b6d713cd6ba7f (diff) | |
| download | gdrive-b56ee90075d3b073bd87e5527528b62f85ef031e.tar.bz2 | |
Retry update file on backend error
| -rw-r--r-- | drive/sync_upload.go | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/drive/sync_upload.go b/drive/sync_upload.go index f4efcb0..15a0327 100644 --- a/drive/sync_upload.go +++ b/drive/sync_upload.go @@ -209,7 +209,7 @@ func (self *Drive) updateChangedFiles(files *syncFiles, args UploadSyncArgs) err              continue          } -        err := self.updateChangedFile(cf, args) +        err := self.updateChangedFile(cf, args, 0)          if err != nil {              return err          } @@ -307,7 +307,7 @@ func (self *Drive) uploadMissingFile(parentId string, lf *LocalFile, args Upload      return nil  } -func (self *Drive) updateChangedFile(cf *changedFile, args UploadSyncArgs) error { +func (self *Drive) updateChangedFile(cf *changedFile, args UploadSyncArgs, try int) error {      srcFile, err := os.Open(cf.local.absPath)      if err != nil {          return fmt.Errorf("Failed to open file: %s", err) @@ -327,7 +327,13 @@ func (self *Drive) updateChangedFile(cf *changedFile, args UploadSyncArgs) error      _, err = self.service.Files.Update(cf.remote.file.Id, dstFile).Media(srcReader, chunkSize).Do()      if err != nil { -        return fmt.Errorf("Failed to update file: %s", err) +        if isBackendError(err) && try < MaxBackendErrorRetries { +            exponentialBackoffSleep(try) +            try++ +            self.updateChangedFile(cf, args, try) +        } else { +            return fmt.Errorf("Failed to update file: %s", err) +        }      }      return nil | 
