mirror of https://github.com/jackc/pgx.git
Make timeout error private
Signed-off-by: Michael Darr <michael.e.darr@gmail.com>query-exec-mode
parent
9a9830c00d
commit
a50d96d491
16
errors.go
16
errors.go
|
@ -20,7 +20,7 @@ func SafeToRetry(err error) bool {
|
||||||
// Timeout checks if err was was caused by a timeout. To be specific, it is true if err was caused within pgconn by a
|
// Timeout checks if err was was caused by a timeout. To be specific, it is true if err was caused within pgconn by a
|
||||||
// context.Canceled, context.DeadlineExceeded or an implementer of net.Error where Timeout() is true.
|
// context.Canceled, context.DeadlineExceeded or an implementer of net.Error where Timeout() is true.
|
||||||
func Timeout(err error) bool {
|
func Timeout(err error) bool {
|
||||||
var timeoutErr *ErrTimeout
|
var timeoutErr *errTimeout
|
||||||
return errors.As(err, &timeoutErr)
|
return errors.As(err, &timeoutErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,21 +129,21 @@ func (e *pgconnError) Unwrap() error {
|
||||||
return e.err
|
return e.err
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrTimeout occurs when an error was caused by a timeout. Specifically, it wraps an error which is
|
// errTimeout occurs when an error was caused by a timeout. Specifically, it wraps an error which is
|
||||||
// context.Canceled, context.DeadlineExceeded, or an implementer of net.Error where Timeout() is true.
|
// context.Canceled, context.DeadlineExceeded, or an implementer of net.Error where Timeout() is true.
|
||||||
type ErrTimeout struct {
|
type errTimeout struct {
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ErrTimeout) Error() string {
|
func (e *errTimeout) Error() string {
|
||||||
return fmt.Sprintf("timeout: %s", e.err.Error())
|
return fmt.Sprintf("timeout: %s", e.err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ErrTimeout) SafeToRetry() bool {
|
func (e *errTimeout) SafeToRetry() bool {
|
||||||
return SafeToRetry(e.err)
|
return SafeToRetry(e.err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ErrTimeout) Unwrap() error {
|
func (e *errTimeout) Unwrap() error {
|
||||||
return e.err
|
return e.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,9 +163,9 @@ func (e *contextAlreadyDoneError) Unwrap() error {
|
||||||
return e.err
|
return e.err
|
||||||
}
|
}
|
||||||
|
|
||||||
// newContextAlreadyDoneError double-wraps a context error in `contextAlreadyDoneError` and `ErrTimeout`.
|
// newContextAlreadyDoneError double-wraps a context error in `contextAlreadyDoneError` and `errTimeout`.
|
||||||
func newContextAlreadyDoneError(ctx context.Context) (err error) {
|
func newContextAlreadyDoneError(ctx context.Context) (err error) {
|
||||||
return &ErrTimeout{&contextAlreadyDoneError{err: ctx.Err()}}
|
return &errTimeout{&contextAlreadyDoneError{err: ctx.Err()}}
|
||||||
}
|
}
|
||||||
|
|
||||||
type writeError struct {
|
type writeError struct {
|
||||||
|
|
|
@ -219,7 +219,7 @@ func connect(ctx context.Context, config *Config, fallbackConfig *FallbackConfig
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var netErr net.Error
|
var netErr net.Error
|
||||||
if errors.As(err, &netErr) && netErr.Timeout() {
|
if errors.As(err, &netErr) && netErr.Timeout() {
|
||||||
err = &ErrTimeout{err: err}
|
err = &errTimeout{err: err}
|
||||||
}
|
}
|
||||||
return nil, &connectError{config: config, msg: "dial error", err: err}
|
return nil, &connectError{config: config, msg: "dial error", err: err}
|
||||||
}
|
}
|
||||||
|
@ -470,7 +470,7 @@ func (pgConn *PgConn) peekMessage() (pgproto3.BackendMessage, error) {
|
||||||
if !(isNetErr && netErr.Timeout()) {
|
if !(isNetErr && netErr.Timeout()) {
|
||||||
pgConn.asyncClose()
|
pgConn.asyncClose()
|
||||||
} else if isNetErr && netErr.Timeout() {
|
} else if isNetErr && netErr.Timeout() {
|
||||||
err = &ErrTimeout{err: err}
|
err = &errTimeout{err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -490,7 +490,7 @@ func (pgConn *PgConn) receiveMessage() (pgproto3.BackendMessage, error) {
|
||||||
if !(isNetErr && netErr.Timeout()) {
|
if !(isNetErr && netErr.Timeout()) {
|
||||||
pgConn.asyncClose()
|
pgConn.asyncClose()
|
||||||
} else if isNetErr && netErr.Timeout() {
|
} else if isNetErr && netErr.Timeout() {
|
||||||
err = &ErrTimeout{err: err}
|
err = &errTimeout{err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
Loading…
Reference in New Issue