Skip to content

Commit

Permalink
Tag EOF as retryable error.
Browse files Browse the repository at this point in the history
  • Loading branch information
Tang8330 committed Jul 28, 2024
1 parent b4c6741 commit 28ba97a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion lib/db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func (s *storeWrapper) Begin() (*sql.Tx, error) {
}

func (s *storeWrapper) IsRetryableError(err error) bool {
return retryableError(err)
return isRetryableError(err)
}

func Open(driverName, dsn string) (Store, error) {
Expand Down
19 changes: 16 additions & 3 deletions lib/db/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,25 @@ package db

import (
"errors"
"io"
"syscall"
)

func retryableError(err error) bool {
if errors.Is(err, syscall.ECONNRESET) || errors.Is(err, syscall.ECONNREFUSED) {
return true
var retryableErrs = []error{
syscall.ECONNRESET,
syscall.ECONNREFUSED,
io.EOF,
}

func isRetryableError(err error) bool {
if err == nil {
return false
}

for _, retryableErr := range retryableErrs {
if errors.Is(err, retryableErr) {
return true
}
}

return false
Expand Down
4 changes: 2 additions & 2 deletions lib/db/errors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/stretchr/testify/assert"
)

func TestRetryable_Errors(t *testing.T) {
func TestIsRetryable_Errors(t *testing.T) {
type _tc struct {
name string
err error
Expand Down Expand Up @@ -49,7 +49,7 @@ func TestRetryable_Errors(t *testing.T) {
}

for _, tc := range tcs {
actualErr := retryableError(tc.err)
actualErr := isRetryableError(tc.err)
assert.Equal(t, tc.expectedResult, actualErr, tc.name)
}
}

0 comments on commit 28ba97a

Please sign in to comment.