diff options
| author | Petter Rasmussen | 2016-02-06 15:07:24 +0100 | 
|---|---|---|
| committer | Petter Rasmussen | 2016-02-06 15:07:24 +0100 | 
| commit | b7e45b080ffe13d286be65ce396da47b36a16944 (patch) | |
| tree | 9059e8b0b19160bb0fbc5a95c27e6e0f1621b972 /drive/errors.go | |
| parent | ce32c7536cf40afae065b09018c05da6ba221c55 (diff) | |
| download | gdrive-b7e45b080ffe13d286be65ce396da47b36a16944.tar.bz2 | |
Retry file upload on backend error
Diffstat (limited to 'drive/errors.go')
| -rw-r--r-- | drive/errors.go | 22 | 
1 files changed, 22 insertions, 0 deletions
| diff --git a/drive/errors.go b/drive/errors.go new file mode 100644 index 0000000..703dae5 --- /dev/null +++ b/drive/errors.go @@ -0,0 +1,22 @@ +package drive + +import ( +    "google.golang.org/api/googleapi" +    "time" +) + +const MaxBackendErrorRetries = 5 + +func isBackendError(err error) bool { +    if err == nil { +        return false +    } + +    ae, ok := err.(*googleapi.Error) +    return ok && ae.Code >= 500 && ae.Code <= 599 +} + +func exponentialBackoffSleep(try int) { +    seconds := pow(2, try) +    time.Sleep(time.Duration(seconds) * time.Second) +} | 
