From 927f8bc82138d90270afc32ff097487c19c78e19 Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Thu, 11 Apr 2024 11:14:20 +0800 Subject: [PATCH] fix: fix ignored context.DeadlineExceeded (#4066) --- core/stores/sqlx/orm.go | 5 +++++ core/stores/sqlx/sqlconn.go | 2 +- core/stores/sqlx/stmt.go | 2 +- tools/goctl/Dockerfile | 1 - 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/stores/sqlx/orm.go b/core/stores/sqlx/orm.go index feeed3972..678847e12 100644 --- a/core/stores/sqlx/orm.go +++ b/core/stores/sqlx/orm.go @@ -1,6 +1,7 @@ package sqlx import ( + "context" "errors" "reflect" "strings" @@ -87,6 +88,10 @@ func getValueInterface(value reflect.Value) (any, error) { } } +func isScanFailed(err error) bool { + return err != nil && !errors.Is(err, context.DeadlineExceeded) +} + func mapStructFieldsIntoSlice(v reflect.Value, columns []string, strict bool) ([]any, error) { fields := unwrapFields(v) if strict && len(columns) < len(fields) { diff --git a/core/stores/sqlx/sqlconn.go b/core/stores/sqlx/sqlconn.go index dfdb3f4ba..4dde5d43f 100644 --- a/core/stores/sqlx/sqlconn.go +++ b/core/stores/sqlx/sqlconn.go @@ -296,7 +296,7 @@ func (db *commonSqlConn) queryRows(ctx context.Context, scanner func(*sql.Rows) return query(ctx, conn, func(rows *sql.Rows) error { e := scanner(rows) - if e != nil && !errors.Is(e, context.DeadlineExceeded) { + if isScanFailed(e) { scanFailed = true } return e diff --git a/core/stores/sqlx/stmt.go b/core/stores/sqlx/stmt.go index b66dcc7f5..e10a110cc 100644 --- a/core/stores/sqlx/stmt.go +++ b/core/stores/sqlx/stmt.go @@ -144,7 +144,7 @@ func (s statement) queryRows(ctx context.Context, scanFn func(any, rowsScanner) err := s.brk.DoWithAcceptable(func() error { return queryStmt(ctx, s.stmt, func(rows *sql.Rows) error { err := scanFn(v, rows) - if err != nil { + if isScanFailed(err) { scanFailed = true } return err diff --git a/tools/goctl/Dockerfile b/tools/goctl/Dockerfile index ec4e2bda5..37e990ae3 100644 --- a/tools/goctl/Dockerfile +++ b/tools/goctl/Dockerfile @@ -35,6 +35,5 @@ LABEL org.opencontainers.image.description="A cloud-native Go microservices fram LABEL org.opencontainers.image.licenses="MIT" LABEL org.opencontainers.image.source="https://github.com/zeromicro/go-zero" LABEL org.opencontainers.image.title="goctl (cli)" -LABEL org.opencontainers.image.version="v1.6.3" ENTRYPOINT ["/usr/local/bin/goctl"]