diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2020-11-17 12:50:16 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2020-11-17 12:50:16 +0300 |
commit | 4a6451746c2e3cd3e6aab83f14495384fc8a9cae (patch) | |
tree | 4acf3e9ec8cd16159aafc75efd8dbca411079d43 | |
parent | 056aeb4c13a88dae4282e5d45d981fdf2a7bd9c5 (diff) | |
parent | cae616cc514f903c55505fd52b619c4907ffae29 (diff) |
Merge branch 'smh-add-err-check-linter' into 'master'
Add linter for checking SQL row errors
See merge request gitlab-org/gitaly!2788
-rw-r--r-- | .golangci.yml | 1 | ||||
-rw-r--r-- | internal/praefect/datastore/glsql/postgres.go | 11 | ||||
-rw-r--r-- | internal/praefect/datastore/queue.go | 3 |
3 files changed, 5 insertions, 10 deletions
diff --git a/.golangci.yml b/.golangci.yml index 91ba3db3c..12a028484 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -20,6 +20,7 @@ linters: - maligned - noctx - sqlclosecheck + - rowserrcheck issues: # Excluding configuration per-path, per-linter, per-text and per-source diff --git a/internal/praefect/datastore/glsql/postgres.go b/internal/praefect/datastore/glsql/postgres.go index 5a0231e1e..8259c5f50 100644 --- a/internal/praefect/datastore/glsql/postgres.go +++ b/internal/praefect/datastore/glsql/postgres.go @@ -136,21 +136,14 @@ type DestProvider interface { } // ScanAll reads all data from 'rows' into holders provided by 'in'. -// It will also 'Close' source after completion. func ScanAll(rows *sql.Rows, in DestProvider) (err error) { - defer func() { - if cErr := rows.Close(); cErr != nil && err == nil { - err = cErr - } - }() - for rows.Next() { if err = rows.Scan(in.To()...); err != nil { return err } } - err = rows.Err() - return err + + return nil } // Uint64Provider allows to use it with ScanAll function to read all rows into it and return result as a slice. diff --git a/internal/praefect/datastore/queue.go b/internal/praefect/datastore/queue.go index 1899a7bee..545fac26e 100644 --- a/internal/praefect/datastore/queue.go +++ b/internal/praefect/datastore/queue.go @@ -402,13 +402,14 @@ func (rq PostgresReplicationEventQueue) Acknowledge(ctx context.Context, state J if err != nil { return nil, fmt.Errorf("query: %w", err) } + defer rows.Close() var acknowledged glsql.Uint64Provider if err := glsql.ScanAll(rows, &acknowledged); err != nil { return nil, fmt.Errorf("scan: %w", err) } - return acknowledged.Values(), nil + return acknowledged.Values(), rows.Err() } // StartHealthUpdate starts periodical update of the event's health identifier. |