github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/pool/errors.go (about) 1 package pool 2 3 import ( 4 "errors" 5 6 "github.com/ydb-platform/ydb-go-genproto/protos/Ydb" 7 grpcCodes "google.golang.org/grpc/codes" 8 9 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors" 10 ) 11 12 var ( 13 errClosedPool = errors.New("closed pool") 14 errItemIsNotAlive = errors.New("item is not alive") 15 errPoolIsOverflow = errors.New("pool is overflow") 16 errNoProgress = errors.New("no progress") 17 ) 18 19 func isRetriable(err error) bool { 20 if err == nil { 21 panic(err) 22 } 23 24 switch { 25 case 26 xerrors.Is(err, errPoolIsOverflow, errItemIsNotAlive, errNoProgress), 27 xerrors.IsRetryableError(err), 28 xerrors.IsOperationError(err, Ydb.StatusIds_OVERLOADED), 29 xerrors.IsTransportError( 30 err, 31 grpcCodes.ResourceExhausted, 32 grpcCodes.DeadlineExceeded, 33 grpcCodes.Unavailable, 34 ): 35 return true 36 default: 37 return false 38 } 39 }