Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enable goerr113 linter #1147

Open
wants to merge 46 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
903b839
publish version action modifies go.mod files in examples and tests/sl…
asmyasnikov Mar 11, 2024
7be8c10
Revert "publish version action modifies go.mod files in examples and …
asmyasnikov Mar 11, 2024
c87fe13
Merge branch 'ydb-platform:master' into master
PaulYakow Mar 18, 2024
ff478a1
Merge branch 'ydb-platform:master' into master
PaulYakow Mar 20, 2024
9217667
chore(lint): enable goerr113
PaulYakow Mar 21, 2024
500065a
Merge branch 'ydb-platform:master' into master
PaulYakow Mar 26, 2024
8e4a7ef
Merge branch 'master' into fix/enable-goerr113
PaulYakow Mar 26, 2024
70e55c5
fix: update balancers
PaulYakow Mar 26, 2024
2a6f60a
fix: update log/field_test.go
PaulYakow Mar 26, 2024
8a4e0b0
Merge branch 'ydb-platform:master' into master
PaulYakow May 2, 2024
3049a37
Merge branch 'master' into fix/enable-goerr113
PaulYakow May 2, 2024
62f5710
fix: update query/stats.go
PaulYakow May 2, 2024
4322acd
fix: update internal/ratelimiter/client.go
PaulYakow May 2, 2024
8d06a78
fix: update internal/scripting/client.go
PaulYakow May 2, 2024
b3b42cf
fix: update internal/grpcwrapper
PaulYakow May 2, 2024
d936850
fix: update internal/conn
PaulYakow May 2, 2024
491eac7
fix: update internal/xerrors
PaulYakow May 2, 2024
6e48593
fix: update internal/value
PaulYakow May 2, 2024
fa805c9
fix: update internal/xsync
PaulYakow May 2, 2024
7cec409
fix: update retry
PaulYakow May 2, 2024
17b0f04
fix: update internal/balancer
PaulYakow May 2, 2024
214225c
fix: update internal/topic
PaulYakow May 2, 2024
e962cfe
fix: update internal/xerrors/stacktrace_test.go
PaulYakow May 2, 2024
6c5e293
fix: update internal/xsql
PaulYakow May 2, 2024
bd8542e
fix: update internal/credentials
PaulYakow May 2, 2024
b66a80a
fix: update internal/table
PaulYakow May 2, 2024
3e042cf
fix: update internal/query
PaulYakow May 2, 2024
3e07e7b
fix: update internal/background
PaulYakow May 2, 2024
45e31de
fix: update internal/scheme
PaulYakow May 2, 2024
e8c9bd7
fix: update internal/coordination
PaulYakow May 2, 2024
8137dbc
fix: update internal/dsn
PaulYakow May 2, 2024
f8f24b6
fix: update internal/pool
PaulYakow May 2, 2024
a294683
fix: update internal/decimal
PaulYakow May 2, 2024
3c15ab4
fix: update internal/meta
PaulYakow May 2, 2024
11d5439
fix: update internal/repeater
PaulYakow May 2, 2024
d31aa28
fix: update internal/cmd
PaulYakow May 2, 2024
126352d
fix: update topic
PaulYakow May 2, 2024
3eb4151
fix: update metrics
PaulYakow May 2, 2024
633d05a
fix: update internal/credentials/access_error_test.go
PaulYakow May 2, 2024
5eee7ec
fix: update table/...
PaulYakow May 2, 2024
6187339
fix: update testutil/...
PaulYakow May 2, 2024
53ea860
fix: update scripting/...
PaulYakow May 2, 2024
94ca4b6
fix: update sugar/...
PaulYakow May 2, 2024
de0e649
fix: update examples/...
PaulYakow May 2, 2024
4f9373a
fix: update tests/slo/...
PaulYakow May 2, 2024
72e0952
fix: revert examples/...
PaulYakow May 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,6 @@ linters:
- gochecknoglobals
- gocognit
- godot
- goerr113
- golint
- ifshort
- interfacebloat
Expand Down
11 changes: 8 additions & 3 deletions balancers/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package balancers

import (
"encoding/json"
"fmt"

balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
Expand Down Expand Up @@ -61,7 +60,10 @@ func createByType(t balancerType) (*balancerConfig.Config, error) {
case typeRoundRobin:
return RoundRobin(), nil
default:
return nil, xerrors.WithStackTrace(fmt.Errorf("unknown type of balancer: %s", t))
return nil, xerrors.WithStackTrace(&balancerTypeError{
message: "unknown type of balancer: %s",
bType: t,
})
}
}

Expand Down Expand Up @@ -96,7 +98,10 @@ func CreateFromConfig(s string) (*balancerConfig.Config, error) {
return PreferLocalDC(b), nil
case preferTypeLocations:
if len(c.Locations) == 0 {
return nil, xerrors.WithStackTrace(fmt.Errorf("empty locations list in balancer '%s' config", c.Type))
return nil, xerrors.WithStackTrace(&balancerTypeError{
message: "empty locations list in balancer '%s' config",
bType: c.Type,
})
}
if c.Fallback {
return PreferLocationsWithFallback(b, c.Locations...), nil
Expand Down
12 changes: 12 additions & 0 deletions balancers/errors.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package balancers

import "fmt"

type balancerTypeError struct {
message string
bType balancerType
}

func (e *balancerTypeError) Error() string {
return fmt.Sprintf(e.message, e.bType)
}
3 changes: 2 additions & 1 deletion examples/basic/native/query/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"time"

environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/sugar"
)

Expand All @@ -19,6 +19,7 @@ func isYdbVersionHaveQueryService() error {
for i, component := range ydbVersion {
if i < len(minYdbVersion) {
if r := strings.Compare(component, minYdbVersion[i]); r < 0 {
//nolint:goerr113
return fmt.Errorf("example '%s' run on minimal YDB version '%v', but current version is '%s'",
os.Args[0],
strings.Join(minYdbVersion, "."),
Expand Down
2 changes: 1 addition & 1 deletion examples/read_table/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"path"

environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/table/options"
"github.com/ydb-platform/ydb-go-sdk/v3/table/types"
)
Expand Down
8 changes: 4 additions & 4 deletions examples/serverless/url_shortener/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
ydbMetrics "github.com/ydb-platform/ydb-go-sdk-prometheus/v2"
ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/table"
"github.com/ydb-platform/ydb-go-sdk/v3/table/options"
"github.com/ydb-platform/ydb-go-sdk/v3/table/result"
Expand Down Expand Up @@ -306,7 +306,7 @@ func (s *service) selectLong(ctx context.Context, hash string) (url string, err
}
}

return "", fmt.Errorf("hash '%s' is not found", hash)
return "", fmt.Errorf("hash '%s' is not found", hash) //nolint:goerr113
}

func writeResponse(w http.ResponseWriter, statusCode int, body string) {
Expand Down Expand Up @@ -390,7 +390,7 @@ func (s *service) handleShorten(w http.ResponseWriter, r *http.Request) {
return
}
if !isLongCorrect(string(url)) {
err = fmt.Errorf("'%s' is not a valid URL", url)
err = fmt.Errorf("'%s' is not a valid URL", url) //nolint:goerr113
writeResponse(w, http.StatusBadRequest, err.Error())

return
Expand Down Expand Up @@ -428,7 +428,7 @@ func (s *service) handleLonger(w http.ResponseWriter, r *http.Request) {
}()
path := strings.Split(r.URL.Path, "/")
if !isShortCorrect(path[len(path)-1]) {
err = fmt.Errorf("'%s' is not a valid short path", path[len(path)-1])
err = fmt.Errorf("'%s' is not a valid short path", path[len(path)-1]) //nolint:goerr113
writeResponse(w, http.StatusBadRequest, err.Error())

return
Expand Down
7 changes: 5 additions & 2 deletions examples/topic/cdc-cache-bus-freeseats/webserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/table/types"
)

var errNotEnthoughtFreeSeats = errors.New("not enough free seats")
var (
errNotEnthoughtFreeSeats = errors.New("not enough free seats")
errNotFound = errors.New("not found")
)

type server struct {
cache *Cache
Expand Down Expand Up @@ -133,7 +136,7 @@ SELECT freeSeats FROM bus WHERE id=$id;
if !res.NextRow() {
freeSeats = 0

return 0, errors.New("not found")
return 0, errNotFound
}

err = res.ScanWithDefaults(&freeSeats)
Expand Down
2 changes: 1 addition & 1 deletion examples/topic/cdc-fill-and-read/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"time"

environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/topic/topicoptions"
"github.com/ydb-platform/ydb-go-sdk/v3/topic/topictypes"
)
Expand Down
2 changes: 1 addition & 1 deletion examples/topic/cdc-fill-and-read/tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"strconv"
"time"

ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/table"
"github.com/ydb-platform/ydb-go-sdk/v3/table/options"
"github.com/ydb-platform/ydb-go-sdk/v3/table/types"
Expand Down
4 changes: 3 additions & 1 deletion examples/topic/topicreader/topicreader_advanced.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/topic/topicreader"
)

var errBadDataLen = errors.New("bad data len")

// ReadMessagesWithCustomBatching example of custom of readed message batch
func ReadMessagesWithCustomBatching(ctx context.Context, db *ydb.Driver) {
reader, _ := db.Topic().StartReader("consumer", nil)
Expand All @@ -31,7 +33,7 @@ type MyMessage struct {
// UnmarshalYDBTopicMessage implements topicreader.MessageContentUnmarshaler interface
func (m *MyMessage) UnmarshalYDBTopicMessage(data []byte) error {
if len(data) != 6 {
return errors.New("bad data len")
return errBadDataLen
}
m.ID = data[0]
m.ChangeType = data[1]
Expand Down
2 changes: 1 addition & 1 deletion examples/ttl/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"path"

environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/sugar"
)

Expand Down
2 changes: 1 addition & 1 deletion examples/ttl_readtable/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"path"

environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
ydb "github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3"
"github.com/ydb-platform/ydb-go-sdk/v3/sugar"
)

Expand Down
1 change: 1 addition & 0 deletions internal/background/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsync"
)

//nolint:goerr113
var (
ErrAlreadyClosed = xerrors.Wrap(errors.New("ydb: background worker already closed"))
errClosedWithNilReason = xerrors.Wrap(errors.New("ydb: background worker closed with nil reason"))
Expand Down
2 changes: 1 addition & 1 deletion internal/balancer/balancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)

var ErrNoEndpoints = xerrors.Wrap(fmt.Errorf("no endpoints"))
var ErrNoEndpoints = xerrors.Wrap(fmt.Errorf("no endpoints")) //nolint:goerr113

type discoveryClient interface {
closer.Closer
Expand Down
11 changes: 8 additions & 3 deletions internal/balancer/local_dc.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
)

var (
errEmptyEndpointsList = errors.New("empty endpoints list")
errFailCheckFastestAddress = errors.New("failed to check fastest address")
)

const (
maxEndpointsCheckPerLocation = 5
)
Expand Down Expand Up @@ -64,7 +69,7 @@ func checkFastestAddress(ctx context.Context, addresses []string) string {

func detectFastestEndpoint(ctx context.Context, endpoints []endpoint.Endpoint) (endpoint.Endpoint, error) {
if len(endpoints) == 0 {
return nil, xerrors.WithStackTrace(errors.New("empty endpoints list"))
return nil, xerrors.WithStackTrace(errEmptyEndpointsList)
}

var lastErr error
Expand All @@ -86,7 +91,7 @@ func detectFastestEndpoint(ctx context.Context, endpoints []endpoint.Endpoint) (
continue
}
if len(addresses) == 0 {
lastErr = xerrors.WithStackTrace(fmt.Errorf("no ips for fqdn: %q", host))
lastErr = xerrors.WithStackTrace(fmt.Errorf("no ips for fqdn: %q", host)) //nolint:goerr113

continue
}
Expand All @@ -106,7 +111,7 @@ func detectFastestEndpoint(ctx context.Context, endpoints []endpoint.Endpoint) (

fastestAddress := checkFastestAddress(ctx, addressesToPing)
if fastestAddress == "" {
return nil, xerrors.WithStackTrace(errors.New("failed to check fastest address"))
return nil, xerrors.WithStackTrace(errFailCheckFastestAddress)
}

return addressToEndpoint[fastestAddress], nil
Expand Down
12 changes: 10 additions & 2 deletions internal/cmd/gstack/utils/utils.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package utils

import (
"errors"
"fmt"
"go/ast"
"go/parser"
Expand All @@ -13,6 +14,11 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
)

var (
errGettingIdentFromExpr = errors.New("error during getting ident from expr")
errGetPackageName = errors.New("error during get package name function")
)

type FunctionIDArg struct {
FuncDecl *ast.FuncDecl
ArgPos token.Pos
Expand All @@ -32,8 +38,10 @@ func ReadFile(filename string, info fs.FileInfo) ([]byte, error) {
return nil, err
}
if n < size {
//nolint:goerr113
return nil, fmt.Errorf("error: size of %q changed during reading (from %d to %d bytes)", filename, size, n)
} else if n > size {
//nolint:goerr113
return nil, fmt.Errorf("error: size of %q changed during reading (from %d to >=%d bytes)", filename, size, len(src))
}

Expand Down Expand Up @@ -120,15 +128,15 @@ func getIdentNameFromExpr(expr ast.Expr) (string, error) {
case *ast.IndexListExpr:
return getIdentNameFromExpr(expr.X)
default:
return "", fmt.Errorf("error during getting ident from expr")
return "", errGettingIdentFromExpr
}
}

func getPackageName(fset *token.FileSet, arg FunctionIDArg) (string, error) {
file := fset.File(arg.ArgPos)
parsedFile, err := parser.ParseFile(fset, file.Name(), nil, parser.PackageClauseOnly)
if err != nil {
return "", fmt.Errorf("error during get package name function")
return "", errGetPackageName
}

return parsedFile.Name.Name, nil
Expand Down
8 changes: 5 additions & 3 deletions internal/cmd/gtrace/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package main
import (
"bufio"
"bytes"
"errors"
"flag"
"fmt"
"go/ast"
Expand All @@ -20,6 +21,8 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
)

var errUnsupportedNumberOfFuncResults = errors.New("unsupported number of function results")

//nolint:gocyclo
func main() {
var (
Expand Down Expand Up @@ -276,9 +279,7 @@ func buildFunc(info *types.Info, traces map[string]*Trace, fn *ast.FuncType) (re
return ret, nil
}
if len(fn.Results.List) > 1 {
return nil, fmt.Errorf(
"unsupported number of function results",
)
return nil, errUnsupportedNumberOfFuncResults
}

r := fn.Results.List[0]
Expand All @@ -302,6 +303,7 @@ func buildFunc(info *types.Info, traces map[string]*Trace, fn *ast.FuncType) (re
}
}

//nolint:goerr113
return nil, fmt.Errorf(
"unsupported function result type %s",
info.TypeOf(r.Type),
Expand Down
6 changes: 3 additions & 3 deletions internal/conn/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ import (

var (
// errOperationNotReady specified error when operation is not ready
errOperationNotReady = xerrors.Wrap(fmt.Errorf("operation is not ready yet"))
errOperationNotReady = xerrors.Wrap(fmt.Errorf("operation is not ready yet")) //nolint:goerr113

// errClosedConnection specified error when connection are closed early
errClosedConnection = xerrors.Wrap(fmt.Errorf("connection closed early"))
errClosedConnection = xerrors.Wrap(fmt.Errorf("connection closed early")) //nolint:goerr113

// errUnavailableConnection specified error when connection are closed early
errUnavailableConnection = xerrors.Wrap(fmt.Errorf("connection unavailable"))
errUnavailableConnection = xerrors.Wrap(fmt.Errorf("connection unavailable")) //nolint:goerr113
)

type Conn interface {
Expand Down
21 changes: 11 additions & 10 deletions internal/conn/error_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,30 @@ import (
"github.com/stretchr/testify/require"
)

var (
errTest = errors.New("test")
errTest2 = errors.New("test2")
)

func TestNodeErrorError(t *testing.T) {
testErr := errors.New("test")
nodeErr := newConnError(1, "localhost:1234", testErr)
nodeErr := newConnError(1, "localhost:1234", errTest)
message := nodeErr.Error()

require.Equal(t, "connError{node_id:1,address:'localhost:1234'}: test", message)
}

func TestNodeErrorUnwrap(t *testing.T) {
testErr := errors.New("test")
nodeErr := newConnError(1, "asd", testErr)
nodeErr := newConnError(1, "asd", errTest)

unwrapped := errors.Unwrap(nodeErr)
require.Equal(t, testErr, unwrapped)
require.Equal(t, errTest, unwrapped)
}

func TestNodeErrorIs(t *testing.T) {
testErr := errors.New("test")
testErr2 := errors.New("test2")
nodeErr := newConnError(1, "localhost:1234", testErr)
nodeErr := newConnError(1, "localhost:1234", errTest)

require.ErrorIs(t, nodeErr, testErr)
require.NotErrorIs(t, nodeErr, testErr2)
require.ErrorIs(t, nodeErr, errTest)
require.NotErrorIs(t, nodeErr, errTest2)
}

type testType1Error struct {
Expand Down
1 change: 1 addition & 0 deletions internal/coordination/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (

//go:generate mockgen -destination grpc_client_mock_test.go -package coordination -write_package_comment=false github.com/ydb-platform/ydb-go-genproto/Ydb_Coordination_V1 CoordinationServiceClient,CoordinationService_SessionClient

//nolint:goerr113
var errNilClient = xerrors.Wrap(errors.New("coordination client is not initialized"))

type Client struct {
Expand Down
Loading
Loading