Skip to content

Commit f0d7155

Browse files
authored
Merge pull request #358 from ydb-platform/badconn
* Refactored the xsql.badconn.Error
2 parents a4e072b + cdec93f commit f0d7155

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Refactored the `xsql.badconn.Error`
2+
13
## v3.37.0
24
* Supported read-only `sql.LevelSnapshot` isolation with fake transaction and `OnlineReadOnly` transaction control (transient, while YDB clusters are not updated with true snapshot isolation mode)
35
* Supported the `*sql.Conn` as input type `ydb.Unwrap` helper for go's 1.18

internal/xsql/badconn/badconn_go1.18.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,38 @@ import (
1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1111
)
1212

13-
type badConnError struct {
13+
type Error struct {
1414
err error
1515
}
1616

17-
func (e badConnError) Error() string {
17+
func (e Error) Origin() error {
18+
return e.err
19+
}
20+
21+
func (e Error) Error() string {
1822
return e.err.Error()
1923
}
2024

21-
func (e badConnError) Is(err error) bool {
25+
func (e Error) Is(err error) bool {
2226
//nolint:errorlint
2327
if err == driver.ErrBadConn {
2428
return true
2529
}
2630
return xerrors.Is(e.err, err)
2731
}
2832

29-
func (e badConnError) As(target interface{}) bool {
30-
return xerrors.As(e.err, target)
33+
func (e Error) As(target interface{}) bool {
34+
switch target.(type) {
35+
case Error, *Error:
36+
return true
37+
default:
38+
return xerrors.As(e.err, target)
39+
}
3140
}
3241

3342
func Map(err error) error {
3443
if retry.MustDeleteSession(err) {
35-
return badConnError{err: err}
44+
return Error{err: err}
3645
}
3746
return err
3847
}

retry/errors_go1.18.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33

44
package retry
55

6+
import (
7+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
8+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/badconn"
9+
)
10+
611
func unwrapErrBadConn(err error) error {
12+
var e *badconn.Error
13+
if xerrors.As(err, &e) {
14+
return e.Origin()
15+
}
716
return err
817
}

0 commit comments

Comments
 (0)