barometer: update DMA's vendoring packages
[barometer.git] / src / dma / vendor / github.com / go-redis / redis / internal / error.go
index e0ff863..34f6bd4 100644 (file)
@@ -8,9 +8,18 @@ import (
        "github.com/go-redis/redis/internal/proto"
 )
 
-func IsRetryableError(err error, retryNetError bool) bool {
-       if IsNetworkError(err) {
-               return retryNetError
+func IsRetryableError(err error, retryTimeout bool) bool {
+       if err == nil {
+               return false
+       }
+       if err == io.EOF {
+               return true
+       }
+       if netErr, ok := err.(net.Error); ok {
+               if netErr.Timeout() {
+                       return retryTimeout
+               }
+               return true
        }
        s := err.Error()
        if s == "ERR max number of clients reached" {
@@ -33,20 +42,13 @@ func IsRedisError(err error) bool {
        return ok
 }
 
-func IsNetworkError(err error) bool {
-       if err == io.EOF {
-               return true
-       }
-       _, ok := err.(net.Error)
-       return ok
-}
-
 func IsBadConn(err error, allowTimeout bool) bool {
        if err == nil {
                return false
        }
        if IsRedisError(err) {
-               return strings.HasPrefix(err.Error(), "READONLY ")
+               // #790
+               return IsReadOnlyError(err)
        }
        if allowTimeout {
                if netErr, ok := err.(net.Error); ok && netErr.Timeout() {
@@ -81,3 +83,7 @@ func IsMovedError(err error) (moved bool, ask bool, addr string) {
 func IsLoadingError(err error) bool {
        return strings.HasPrefix(err.Error(), "LOADING ")
 }
+
+func IsReadOnlyError(err error) bool {
+       return strings.HasPrefix(err.Error(), "READONLY ")
+}