aboutsummaryrefslogtreecommitdiffstats
path: root/drive/errors.go
diff options
context:
space:
mode:
authorPetter Rasmussen2016-02-06 15:07:24 +0100
committerPetter Rasmussen2016-02-06 15:07:24 +0100
commitb7e45b080ffe13d286be65ce396da47b36a16944 (patch)
tree9059e8b0b19160bb0fbc5a95c27e6e0f1621b972 /drive/errors.go
parentce32c7536cf40afae065b09018c05da6ba221c55 (diff)
downloadgdrive-b7e45b080ffe13d286be65ce396da47b36a16944.tar.bz2
Retry file upload on backend error
Diffstat (limited to 'drive/errors.go')
-rw-r--r--drive/errors.go22
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)
+}