From 519a52962455157e9d9b0575b9e27e15ad68e9b5 Mon Sep 17 00:00:00 2001 From: Michal-Leszczynski <74614433+Michal-Leszczynski@users.noreply.github.com> Date: Wed, 13 Nov 2024 07:43:59 +0100 Subject: [PATCH] chore(go.mod): bump go to 1.23 and golangci-lint to 1.61.0 (#4080) * chore(go.mod): bump go to 1.23.2 * feat(install-dependencies): bump golangci-lint to 1.61.0 It has support for go 1.23. * chore(linter): replace unused arguments with _ * chore(linter): update linter spec It refreshes linter configuration by: - using new config fields - excluding stale linters - excluding 'mnd' (magic number detected) - we can consider to re-enable it in the future - excluding error not checked from CLI * chore(linter): use canonical header names * chore(linter): use new for loop syntax * chore(linter): use safe metrics getters * chore(linter): improve string formatting * chore(linter): use named http status codes * chore(linter): name arguments in interfaces * chore(linter): allow for fatcontext in scyllaclient * chore(linter): don't wrap error with no-const string (cherry picked from commit 18103e06f36695d38fab38e51c061d7841016d95) --- .go-version | 2 +- .golangci.yml | 33 ++++++++------------ go.mod | 2 +- install-dependencies.sh | 2 +- pkg/cmd/agent/agent.go | 2 +- pkg/cmd/agent/benchmark.go | 4 +-- pkg/cmd/agent/check_location.go | 2 +- pkg/cmd/agent/cpu.go | 2 +- pkg/cmd/agent/download_files.go | 2 +- pkg/cmd/agent/metrics.go | 4 +-- pkg/cmd/agent/root.go | 2 +- pkg/cmd/sctool/completion.go | 2 +- pkg/cmd/sctool/root.go | 2 +- pkg/cmd/scylla-manager/check_for_updates.go | 2 +- pkg/cmd/scylla-manager/root.go | 2 +- pkg/command/backup/backupdelete/cmd.go | 2 +- pkg/command/backup/backupfiles/cmd.go | 2 +- pkg/command/backup/backuplist/cmd.go | 2 +- pkg/command/cluster/clusteradd/cmd.go | 2 +- pkg/command/cluster/clusterdelete/cmd.go | 2 +- pkg/command/cluster/clusterlist/cmd.go | 2 +- pkg/command/cluster/clusterupdate/cmd.go | 2 +- pkg/command/legacy/task/tasklist/cmd.go | 2 +- pkg/command/repair/repaircontrol/cmd.go | 2 +- pkg/command/resume/cmd.go | 2 +- pkg/command/status/cmd.go | 2 +- pkg/command/tasks/cmd.go | 2 +- pkg/command/version/cmd.go | 2 +- pkg/config/agent/enrich.go | 4 +-- pkg/downloader/user.go | 4 +-- pkg/metrics/delete.go | 4 +-- pkg/rclone/aws.go | 4 +-- pkg/rclone/bench/createfiles.go | 2 +- pkg/rclone/config.go | 3 +- pkg/rclone/operations/operations.go | 2 +- pkg/rclone/progress.go | 2 +- pkg/rclone/rcserver/rc.go | 7 +++-- pkg/rclone/rcserver/rchardening.go | 6 ++-- pkg/rclone/rcserver/rcserver.go | 6 ++-- pkg/restapi/heartbeat.go | 2 +- pkg/scheduler/listener.go | 4 +-- pkg/scheduler/window.go | 4 +-- pkg/scyllaclient/client_ping.go | 13 ++++---- pkg/scyllaclient/client_scylla.go | 25 +++++++-------- pkg/scyllaclient/config_client.go | 14 ++++----- pkg/scyllaclient/hostpool.go | 2 +- pkg/scyllaclient/retry.go | 2 +- pkg/scyllaclient/scyllaclienttest/matcher.go | 2 +- pkg/scyllaclient/scyllaclienttest/server.go | 2 +- pkg/service/backup/backupspec/dclimit.go | 3 +- pkg/service/backup/backupspec/manifest.go | 2 +- pkg/service/backup/progress.go | 2 +- pkg/service/backup/service.go | 2 +- pkg/service/backup/validation.go | 7 ++--- pkg/service/backup/worker_upload.go | 2 +- pkg/service/cluster/service.go | 6 ++-- pkg/service/configcache/service.go | 4 +-- pkg/service/healthcheck/runner.go | 4 +-- pkg/service/repair/progress.go | 2 +- pkg/service/repair/service.go | 2 +- pkg/service/restore/batch.go | 4 +-- pkg/testutils/db/db.go | 5 +-- pkg/testutils/matchers.go | 4 +-- testing/minio/go.mod | 2 +- v3/pkg/managerclient/go.mod | 2 +- v3/pkg/util/go.mod | 4 +-- v3/swagger/go.mod | 2 +- 67 files changed, 125 insertions(+), 139 deletions(-) diff --git a/.go-version b/.go-version index d2ab029d32..a1b6e17d61 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.21 +1.23 diff --git a/.golangci.yml b/.golangci.yml index 27d1285b86..8b738d6139 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,12 +1,6 @@ run: - deadline: 5m + timeout: 5m tests: false - skip-files: - - _gen\.go$ - - _string\.go$ - - mock_.*\.go$ - - pkg/managerclient/sizesuffix.go - silent: true linters-settings: errcheck: @@ -28,7 +22,6 @@ linters-settings: - regexpSimplify - yodaStyleExpr - whyNoLint - - timeCmpSimplify lll: line-length: 180 nestif: @@ -39,44 +32,42 @@ linters: disable: - depguard - tagalign - - deadcode - - varcheck - - structcheck - interfacebloat - - nosnakecase - gci - contextcheck - cyclop - durationcheck - exhaustive - - exhaustivestruct - exhaustruct - forbidigo - forcetypeassert - funlen - - gas + - gosec - gochecknoglobals - gochecknoinits - - goerr113 - - golint + - err113 - gomnd - - ifshort - - interfacer - ireturn - - maligned - nilerr - nlreturn - nolintlint - nonamedreturns - prealloc - promlinter - - scopelint - tagliatelle - varnamelen - wrapcheck - wsl + - exportloopref + - execinquery + - mnd issues: + exclude-files: + - _gen\.go$ + - _string\.go$ + - mock_.*\.go$ + - pkg/managerclient/sizesuffix.go exclude-use-default: false exclude: - a blank import should be only in a main or test package, or have a comment justifying it @@ -125,5 +116,7 @@ issues: - string `string` has [\d]+ occurrences, make it a constant - Function name[:] .+, Cyclomatic Complexity exclude-rules: + - path: v3/pkg/managerclient|pkg/command|pkg/cmd + text: Error return value of `fmt.Fprintf?(ln)?` is not checked - path: pkg/scheduler/activation\.go text: receiver-naming[:] receiver name .+ should be consistent with previous receiver name .+ for invalid-type diff --git a/go.mod b/go.mod index 9a60b696b8..cd0b751863 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/scylladb/scylla-manager/v3 -go 1.21.1 +go 1.23.2 require ( github.com/aws/aws-sdk-go v1.35.17 diff --git a/install-dependencies.sh b/install-dependencies.sh index d424aeb775..cb5513098c 100755 --- a/install-dependencies.sh +++ b/install-dependencies.sh @@ -35,7 +35,7 @@ rm -f "${LOCAL_BIN}"/* echo "==> Installing Go packages at ${LOCAL_BIN}" export GOBIN=${LOCAL_BIN} -go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2 +go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.61.0 go install github.com/goreleaser/goreleaser@v1.14.1 go install github.com/go-enry/go-license-detector/v4/cmd/license-detector@latest go install github.com/golang/mock/mockgen@v1.6.0 diff --git a/pkg/cmd/agent/agent.go b/pkg/cmd/agent/agent.go index f387cad358..eee318c9c7 100644 --- a/pkg/cmd/agent/agent.go +++ b/pkg/cmd/agent/agent.go @@ -45,7 +45,7 @@ func newAgentHandler(c agent.Config, rclone http.Handler, logger log.Logger) *ch } }) m.Post("/terminate", selfSigterm()) - m.Post("/free_os_memory", func(writer http.ResponseWriter, request *http.Request) { + m.Post("/free_os_memory", func(_ http.ResponseWriter, _ *http.Request) { debug.FreeOSMemory() }) diff --git a/pkg/cmd/agent/benchmark.go b/pkg/cmd/agent/benchmark.go index 7d4e16b4a2..506359a984 100644 --- a/pkg/cmd/agent/benchmark.go +++ b/pkg/cmd/agent/benchmark.go @@ -37,7 +37,7 @@ var benchmarkArgs = struct { var benchmarkCmd = &cobra.Command{ Use: "benchmark", Short: "Executes benchmark scenarios, copies all files in each scenario directory to the location", - RunE: func(cmd *cobra.Command, args []string) (err error) { + RunE: func(cmd *cobra.Command, _ []string) (err error) { ctx := context.Background() defer func() { if err != nil { @@ -172,7 +172,7 @@ var defaultScenario = []struct { var createScenarioCmd = &cobra.Command{ Use: "create-scenario", Short: "Adds files of specified size to a scenario directory", - RunE: func(cmd *cobra.Command, args []string) (err error) { + RunE: func(cmd *cobra.Command, _ []string) (err error) { defer func() { if err != nil { fmt.Fprintf(cmd.ErrOrStderr(), "FAILED: %v\n", err) diff --git a/pkg/cmd/agent/check_location.go b/pkg/cmd/agent/check_location.go index 792dd57f81..523e72648d 100644 --- a/pkg/cmd/agent/check_location.go +++ b/pkg/cmd/agent/check_location.go @@ -25,7 +25,7 @@ var checkLocationArgs = struct { var checkLocationCmd = &cobra.Command{ Use: "check-location", Short: "Checks if backup location is accessible", - RunE: func(cmd *cobra.Command, args []string) (err error) { + RunE: func(cmd *cobra.Command, _ []string) (err error) { defer func() { if err != nil { fmt.Fprintf(cmd.ErrOrStderr(), "FAILED: %v\n", err) diff --git a/pkg/cmd/agent/cpu.go b/pkg/cmd/agent/cpu.go index 1ac977f371..20eb6b9723 100644 --- a/pkg/cmd/agent/cpu.go +++ b/pkg/cmd/agent/cpu.go @@ -44,7 +44,7 @@ var cpuTestCmd = &cobra.Command{ SilenceErrors: true, Hidden: true, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { cpus := cpuTestArgs.cpus if len(cpus) == 0 { fmt.Println("Running on all CPUs", "pid", os.Getpid()) diff --git a/pkg/cmd/agent/download_files.go b/pkg/cmd/agent/download_files.go index 7dbfcc1253..e3dd6873b1 100644 --- a/pkg/cmd/agent/download_files.go +++ b/pkg/cmd/agent/download_files.go @@ -48,7 +48,7 @@ var downloadFilesArgs = struct { var downloadFilesCmd = &cobra.Command{ Use: "download-files", Short: "Downloads files from backup location", - RunE: func(cmd *cobra.Command, args []string) (err error) { + RunE: func(cmd *cobra.Command, _ []string) (err error) { a := downloadFilesArgs // Validate action flags diff --git a/pkg/cmd/agent/metrics.go b/pkg/cmd/agent/metrics.go index 3bcaf1df0c..6cc69ea114 100644 --- a/pkg/cmd/agent/metrics.go +++ b/pkg/cmd/agent/metrics.go @@ -3,7 +3,7 @@ package main import ( - "fmt" + "strconv" "github.com/prometheus/client_golang/prometheus" ) @@ -31,5 +31,5 @@ func (m AgentMetrics) MustRegister() AgentMetrics { // RecordStatusCode increases counter of "status_code" metric. func (m AgentMetrics) RecordStatusCode(method, path string, status int) { - m.StatusCode.WithLabelValues(method, path, fmt.Sprint(status)).Inc() + m.StatusCode.WithLabelValues(method, path, strconv.Itoa(status)).Inc() } diff --git a/pkg/cmd/agent/root.go b/pkg/cmd/agent/root.go index a438ed24e5..8f1d961d07 100644 --- a/pkg/cmd/agent/root.go +++ b/pkg/cmd/agent/root.go @@ -29,7 +29,7 @@ var rootCmd = &cobra.Command{ SilenceUsage: true, SilenceErrors: true, - RunE: func(cmd *cobra.Command, args []string) (runError error) { + RunE: func(cmd *cobra.Command, _ []string) (runError error) { // Print version and return if rootArgs.version { fmt.Fprintf(cmd.OutOrStdout(), "%s\n", pkg.Version()) diff --git a/pkg/cmd/sctool/completion.go b/pkg/cmd/sctool/completion.go index b6fd48222e..4521eb264a 100644 --- a/pkg/cmd/sctool/completion.go +++ b/pkg/cmd/sctool/completion.go @@ -45,7 +45,7 @@ func addCompletionCommand(rootCmd *cobra.Command) { cmd.AddCommand(&cobra.Command{ Use: string(s), Short: "Generate " + string(s) + "completion", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { return completion(rootCmd, s) }, }) diff --git a/pkg/cmd/sctool/root.go b/pkg/cmd/sctool/root.go index ad7491b778..654f8d23b4 100644 --- a/pkg/cmd/sctool/root.go +++ b/pkg/cmd/sctool/root.go @@ -34,7 +34,7 @@ func newRootCommand(client *managerclient.Client) *cobra.Command { client: client, } cmd.init() - cmd.PersistentPreRunE = func(_ *cobra.Command, args []string) error { + cmd.PersistentPreRunE = func(_ *cobra.Command, _ []string) error { return cmd.preRun() } return &cmd.Command diff --git a/pkg/cmd/scylla-manager/check_for_updates.go b/pkg/cmd/scylla-manager/check_for_updates.go index 83755b0799..a5e01ab258 100644 --- a/pkg/cmd/scylla-manager/check_for_updates.go +++ b/pkg/cmd/scylla-manager/check_for_updates.go @@ -16,7 +16,7 @@ var checkForUpdatesCmd = &cobra.Command{ Short: "Check for updates", Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { install, err := cmd.Flags().GetBool("install") if err != nil { return err diff --git a/pkg/cmd/scylla-manager/root.go b/pkg/cmd/scylla-manager/root.go index d7014d96fc..35f21677eb 100644 --- a/pkg/cmd/scylla-manager/root.go +++ b/pkg/cmd/scylla-manager/root.go @@ -37,7 +37,7 @@ var rootCmd = &cobra.Command{ SilenceUsage: true, SilenceErrors: true, - RunE: func(cmd *cobra.Command, args []string) (runError error) { + RunE: func(cmd *cobra.Command, _ []string) (runError error) { // Print version and return if rootArgs.version { fmt.Fprintf(cmd.OutOrStdout(), "%s\n", pkg.Version()) diff --git a/pkg/command/backup/backupdelete/cmd.go b/pkg/command/backup/backupdelete/cmd.go index 6617ae11e4..c705fa95a2 100644 --- a/pkg/command/backup/backupdelete/cmd.go +++ b/pkg/command/backup/backupdelete/cmd.go @@ -34,7 +34,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/backup/backupfiles/cmd.go b/pkg/command/backup/backupfiles/cmd.go index 8ee8c43787..5bbd0006c6 100644 --- a/pkg/command/backup/backupfiles/cmd.go +++ b/pkg/command/backup/backupfiles/cmd.go @@ -41,7 +41,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/backup/backuplist/cmd.go b/pkg/command/backup/backuplist/cmd.go index 28260af447..46a76d6c85 100644 --- a/pkg/command/backup/backuplist/cmd.go +++ b/pkg/command/backup/backuplist/cmd.go @@ -38,7 +38,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/cluster/clusteradd/cmd.go b/pkg/command/cluster/clusteradd/cmd.go index 509b761b73..ba43983a47 100644 --- a/pkg/command/cluster/clusteradd/cmd.go +++ b/pkg/command/cluster/clusteradd/cmd.go @@ -46,7 +46,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/cluster/clusterdelete/cmd.go b/pkg/command/cluster/clusterdelete/cmd.go index dceba3e229..9647029efa 100644 --- a/pkg/command/cluster/clusterdelete/cmd.go +++ b/pkg/command/cluster/clusterdelete/cmd.go @@ -29,7 +29,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/cluster/clusterlist/cmd.go b/pkg/command/cluster/clusterlist/cmd.go index 1399abab93..8404c26909 100644 --- a/pkg/command/cluster/clusterlist/cmd.go +++ b/pkg/command/cluster/clusterlist/cmd.go @@ -25,7 +25,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { if err := yaml.Unmarshal(res, &cmd.Command); err != nil { panic(err) } - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/cluster/clusterupdate/cmd.go b/pkg/command/cluster/clusterupdate/cmd.go index 43b21d41c4..6065b8f364 100644 --- a/pkg/command/cluster/clusterupdate/cmd.go +++ b/pkg/command/cluster/clusterupdate/cmd.go @@ -44,7 +44,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/legacy/task/tasklist/cmd.go b/pkg/command/legacy/task/tasklist/cmd.go index 4437cf2deb..a084464083 100644 --- a/pkg/command/legacy/task/tasklist/cmd.go +++ b/pkg/command/legacy/task/tasklist/cmd.go @@ -37,7 +37,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/repair/repaircontrol/cmd.go b/pkg/command/repair/repaircontrol/cmd.go index c92dcefffe..72206e8ed5 100644 --- a/pkg/command/repair/repaircontrol/cmd.go +++ b/pkg/command/repair/repaircontrol/cmd.go @@ -33,7 +33,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/resume/cmd.go b/pkg/command/resume/cmd.go index f159ce4024..99149f2d17 100644 --- a/pkg/command/resume/cmd.go +++ b/pkg/command/resume/cmd.go @@ -30,7 +30,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/status/cmd.go b/pkg/command/status/cmd.go index 2e999630f4..2fc78e4325 100644 --- a/pkg/command/status/cmd.go +++ b/pkg/command/status/cmd.go @@ -29,7 +29,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/tasks/cmd.go b/pkg/command/tasks/cmd.go index b7bfb871cd..8c9b3b1374 100644 --- a/pkg/command/tasks/cmd.go +++ b/pkg/command/tasks/cmd.go @@ -39,7 +39,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { panic(err) } cmd.init() - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/command/version/cmd.go b/pkg/command/version/cmd.go index 22577b116c..31e4de91a2 100644 --- a/pkg/command/version/cmd.go +++ b/pkg/command/version/cmd.go @@ -27,7 +27,7 @@ func NewCommand(client *managerclient.Client) *cobra.Command { if err := yaml.Unmarshal(res, &cmd.Command); err != nil { panic(err) } - cmd.RunE = func(_ *cobra.Command, args []string) error { + cmd.RunE = func(_ *cobra.Command, _ []string) error { return cmd.run() } return &cmd.Command diff --git a/pkg/config/agent/enrich.go b/pkg/config/agent/enrich.go index 11e787b5c5..42889be75a 100644 --- a/pkg/config/agent/enrich.go +++ b/pkg/config/agent/enrich.go @@ -4,8 +4,8 @@ package agent import ( "context" - "fmt" "net" + "strconv" "github.com/scylladb/scylla-manager/v3/pkg/scyllaclient" ) @@ -19,7 +19,7 @@ func EnrichConfigFromAPI(ctx context.Context, addr string, c *Config) error { c.Scylla = scyllaConfig if c.HTTPS == "" { - c.HTTPS = net.JoinHostPort(c.Scylla.ListenAddress, fmt.Sprint(c.HTTPSPort)) + c.HTTPS = net.JoinHostPort(c.Scylla.ListenAddress, strconv.Itoa(c.HTTPSPort)) } return nil diff --git a/pkg/downloader/user.go b/pkg/downloader/user.go index 5bf09fc161..a6b9d8dc65 100644 --- a/pkg/downloader/user.go +++ b/pkg/downloader/user.go @@ -3,9 +3,9 @@ package downloader import ( - "fmt" "os" "os/user" + "strconv" "syscall" "github.com/pkg/errors" @@ -21,5 +21,5 @@ func dirOwner(dir string) (*user.User, error) { return nil, errors.Errorf("unexpected OS stat typ %T", s.Sys()) } - return user.LookupId(fmt.Sprint(sys.Uid)) + return user.LookupId(strconv.FormatUint(uint64(sys.Uid), 10)) } diff --git a/pkg/metrics/delete.go b/pkg/metrics/delete.go index 4b325a8aa3..5afe5e609c 100644 --- a/pkg/metrics/delete.go +++ b/pkg/metrics/delete.go @@ -23,7 +23,7 @@ func DeleteMatching(c CollectorDeleter, matcher func(*dto.Metric) bool) { continue } if matcher(&data) { - toDelete = append(toDelete, makeLabels(data.Label)) + toDelete = append(toDelete, makeLabels(data.GetLabel())) } } @@ -47,7 +47,7 @@ func setGaugeVecMatching(c *prometheus.GaugeVec, value float64, matcher func(*dt continue } if matcher(&data) { - labels = append(labels, makeLabels(data.Label)) + labels = append(labels, makeLabels(data.GetLabel())) } } diff --git a/pkg/rclone/aws.go b/pkg/rclone/aws.go index ec8bf47ca2..3e7b9dff28 100644 --- a/pkg/rclone/aws.go +++ b/pkg/rclone/aws.go @@ -35,7 +35,7 @@ func awsRegionFromMetadataAPI() string { return "" } if token != "" { - reqMetadata.Header.Set("X-aws-ec2-metadata-token", token) + reqMetadata.Header.Set("X-Aws-Ec2-Metadata-Token", token) } metadataClient := http.Client{ @@ -66,7 +66,7 @@ func awsAPIToken() (string, error) { if err != nil { return "", errors.Wrap(err, "create token request") } - reqToken.Header.Set("X-aws-ec2-metadata-token-ttl-seconds", "21600") + reqToken.Header.Set("X-Aws-Ec2-Metadata-Token-Ttl-Seconds", "21600") tokenClient := http.Client{ Timeout: 2 * time.Second, } diff --git a/pkg/rclone/bench/createfiles.go b/pkg/rclone/bench/createfiles.go index b4b859d96b..695f7344cb 100644 --- a/pkg/rclone/bench/createfiles.go +++ b/pkg/rclone/bench/createfiles.go @@ -19,7 +19,7 @@ func CreateFiles(dir string, sizeMB, fileCount int) error { return err } - for i := 0; i < fileCount; i++ { + for i := range fileCount { if err := createFileIfNotExist(size, path.Join(dir, fmt.Sprintf("%s_%d", filePrefix, i))); err != nil { return err } diff --git a/pkg/rclone/config.go b/pkg/rclone/config.go index 88a60f371b..bb7311945d 100644 --- a/pkg/rclone/config.go +++ b/pkg/rclone/config.go @@ -3,7 +3,6 @@ package rclone import ( - "fmt" "sync" "github.com/rclone/rclone/fs" @@ -81,5 +80,5 @@ func (c *inMemoryConf) Set(section, key, value string) (err error) { // UserAgent returns string value that can be used as identifier in client // calls to the service providers. func UserAgent() string { - return fmt.Sprintf("Scylla Manager Agent %s", pkg.Version()) + return "Scylla Manager Agent " + pkg.Version() } diff --git a/pkg/rclone/operations/operations.go b/pkg/rclone/operations/operations.go index 401a1528ef..38ad8ef3e9 100644 --- a/pkg/rclone/operations/operations.go +++ b/pkg/rclone/operations/operations.go @@ -104,7 +104,7 @@ func CheckPermissions(ctx context.Context, l fs.Fs) error { Recurse: false, NoModTime: true, } - if err := operations.ListJSON(ctx, l, testDirName, &opts, func(item *operations.ListJSONItem) error { + if err := operations.ListJSON(ctx, l, testDirName, &opts, func(_ *operations.ListJSONItem) error { return nil }); err != nil { return asOperationError("list", l, err) diff --git a/pkg/rclone/progress.go b/pkg/rclone/progress.go index a251c4d0f3..b549a0d764 100644 --- a/pkg/rclone/progress.go +++ b/pkg/rclone/progress.go @@ -84,7 +84,7 @@ func printProgress(logMessage string) { out(terminal.MoveUp) } // Move to the start of the block we wrote erasing all the previous lines - for i := 0; i < nlines-1; i++ { + for range nlines - 1 { out(terminal.EraseLine) out(terminal.MoveUp) } diff --git a/pkg/rclone/rcserver/rc.go b/pkg/rclone/rcserver/rc.go index e4ec3bc2fb..50f63a298c 100644 --- a/pkg/rclone/rcserver/rc.go +++ b/pkg/rclone/rcserver/rc.go @@ -8,6 +8,7 @@ import ( "io" "os" "path" + "strconv" "time" "github.com/mitchellh/mapstructure" @@ -316,7 +317,7 @@ func rcCat(ctx context.Context, in rc.Params) (out rc.Params, err error) { h := w.Header() h.Set("Content-Type", "application/octet-stream") - h.Set("Content-Length", fmt.Sprint(o.Size())) + h.Set("Content-Length", strconv.FormatInt(o.Size(), 10)) n, err := io.Copy(w, r) if err != nil { @@ -367,7 +368,7 @@ func rcPut(ctx context.Context, in rc.Params) (out rc.Params, err error) { dst, err := f.NewObject(ctx, remote) if err == nil { if rcops.Equal(ctx, info, dst) { - return nil, nil + return nil, nil //nolint: nilnil } else if rclone.GetConfig().Immutable { fs.Errorf(dst, "Source and destination exist but do not match: immutable file modified") return nil, fs.ErrorImmutableModified @@ -417,7 +418,7 @@ func rcCheckPermissions(ctx context.Context, in rc.Params) (out rc.Params, err e } fs.Infof(nil, "Location check done") - return nil, nil + return nil, nil //nolint: nilnil } func init() { diff --git a/pkg/rclone/rcserver/rchardening.go b/pkg/rclone/rcserver/rchardening.go index 6b37b9be38..9173502ace 100644 --- a/pkg/rclone/rcserver/rchardening.go +++ b/pkg/rclone/rcserver/rchardening.go @@ -27,7 +27,7 @@ func wrap(fn rc.Func, v paramsValidator) rc.Func { // pathHasPrefix reads "fs" and "remote" params, evaluates absolute path and // ensures it has the required prefix. func pathHasPrefix(prefixes ...string) paramsValidator { - return func(ctx context.Context, in rc.Params) error { + return func(_ context.Context, in rc.Params) error { _, p, err := joined(in, "fs", "remote") if err != nil { return err @@ -50,7 +50,7 @@ func pathHasPrefix(prefixes ...string) paramsValidator { // pathHasSuffix reads "fs" and "remote" params + checks if the path has // required suffix. func pathHasSuffix(suffix string) paramsValidator { - return func(ctx context.Context, in rc.Params) error { + return func(_ context.Context, in rc.Params) error { _, p, err := joined(in, "fs", "remote") if err != nil { return err @@ -115,7 +115,7 @@ func remoteToLocal() paramsValidator { } func sameDir() paramsValidator { - return func(ctx context.Context, in rc.Params) error { + return func(_ context.Context, in rc.Params) error { srcName, srcPath, err := joined(in, "srcFs", "srcRemote") if err != nil { return err diff --git a/pkg/rclone/rcserver/rcserver.go b/pkg/rclone/rcserver/rcserver.go index 400d58afd8..f317c79894 100644 --- a/pkg/rclone/rcserver/rcserver.go +++ b/pkg/rclone/rcserver/rcserver.go @@ -8,11 +8,11 @@ package rcserver import ( "bytes" "encoding/json" - "fmt" "io" "mime" "net/http" "os" + "strconv" "strings" "sync" "time" @@ -119,7 +119,7 @@ func (s Server) writeJSON(w http.ResponseWriter, out rc.Params) error { if err := json.NewEncoder(buf).Encode(out); err != nil { return err } - w.Header().Set("Content-Length", fmt.Sprint(buf.Len())) + w.Header().Set("Content-Length", strconv.Itoa(buf.Len())) _, err := io.Copy(w, buf) return err } @@ -272,7 +272,7 @@ func (s Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } fs.Debugf(nil, "rc: %q: reply %+v: %v", path, out, err) - w.Header().Add("x-rclone-jobid", fmt.Sprintf("%d", jobID)) + w.Header().Add("X-Rclone-Jobid", strconv.FormatInt(jobID, 10)) if err := s.writeJSON(w, out); err != nil { s.writeError(path, in, w, err, http.StatusInternalServerError) diff --git a/pkg/restapi/heartbeat.go b/pkg/restapi/heartbeat.go index 11cb1e906b..35d0d82c66 100644 --- a/pkg/restapi/heartbeat.go +++ b/pkg/restapi/heartbeat.go @@ -6,7 +6,7 @@ import "net/http" // Heartbeat responds with status 204. func Heartbeat() http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusNoContent) } } diff --git a/pkg/scheduler/listener.go b/pkg/scheduler/listener.go index c7f2078338..12b02ba64a 100644 --- a/pkg/scheduler/listener.go +++ b/pkg/scheduler/listener.go @@ -12,8 +12,8 @@ import ( // Listener specifies pluggable hooks for scheduler events. // Parametrized by scheduler key type. type Listener[K comparable] interface { - OnSchedulerStart(context.Context) - OnSchedulerStop(context.Context) + OnSchedulerStart(ctx context.Context) + OnSchedulerStop(ctx context.Context) OnRunStart(ctx *RunContext[K]) OnRunSuccess(ctx *RunContext[K]) OnRunStop(ctx *RunContext[K], err error) diff --git a/pkg/scheduler/window.go b/pkg/scheduler/window.go index cf33631ba3..81d7feb79c 100644 --- a/pkg/scheduler/window.go +++ b/pkg/scheduler/window.go @@ -132,7 +132,7 @@ func (s slot) expand() []slot { return []slot{s} } w := make([]slot, 7) - for i := 0; i < 7; i++ { + for i := range 7 { w[i].Begin.Weekday = time.Weekday(i) w[i].Begin.Time = s.Begin.Time w[i].End.Weekday = time.Weekday(i) @@ -159,7 +159,7 @@ func NewWindow(wdt ...WeekdayTime) (Window, error) { l := len(wdt) / 2 w := make(Window, 0, l) - for i := 0; i < l; i++ { + for i := range l { j := 2 * i s := slot{ Begin: wdt[j], diff --git a/pkg/scyllaclient/client_ping.go b/pkg/scyllaclient/client_ping.go index f38a84a184..c547fb17dc 100644 --- a/pkg/scyllaclient/client_ping.go +++ b/pkg/scyllaclient/client_ping.go @@ -141,7 +141,6 @@ func (c *Client) ClosestDC(ctx context.Context, dcs map[string][]string) ([]stri // Test latency of 3 random hosts from each DC. for dc, hosts := range dcs { - dc := dc hosts := pickNRandomHosts(3, hosts) size += len(hosts) @@ -165,11 +164,11 @@ func (c *Client) ClosestDC(ctx context.Context, dcs map[string][]string) ([]stri } // Select the lowest latency for each DC. - min := make(map[string]time.Duration, len(dcs)) - for i := 0; i < size; i++ { + minDC := make(map[string]time.Duration, len(dcs)) + for range size { v := <-out - if m, ok := min[v.dc]; !ok || m > v.rtt { - min[v.dc] = v.rtt + if m, ok := minDC[v.dc]; !ok || m > v.rtt { + minDC[v.dc] = v.rtt } } @@ -179,11 +178,11 @@ func (c *Client) ClosestDC(ctx context.Context, dcs map[string][]string) ([]stri sorted = append(sorted, dc) } sort.Slice(sorted, func(i, j int) bool { - return min[sorted[i]] < min[sorted[j]] + return minDC[sorted[i]] < minDC[sorted[j]] }) // All hosts failed... - if min[sorted[0]] == math.MaxInt64 { + if minDC[sorted[0]] == math.MaxInt64 { return nil, errors.New("could not connect to any node") } diff --git a/pkg/scyllaclient/client_scylla.go b/pkg/scyllaclient/client_scylla.go index 41f3bbe517..022a7b7f4a 100644 --- a/pkg/scyllaclient/client_scylla.go +++ b/pkg/scyllaclient/client_scylla.go @@ -31,7 +31,7 @@ import ( ) // ErrHostInvalidResponse is to indicate that one of the root-causes is the invalid response from scylla-server. -var ErrHostInvalidResponse = fmt.Errorf("invalid response from host") +var ErrHostInvalidResponse = errors.New("invalid response from host") // ClusterName returns cluster name. func (c *Client) ClusterName(ctx context.Context) (string, error) { @@ -225,7 +225,7 @@ func (c *Client) HostIDs(ctx context.Context) (map[string]string, error) { } v := make(map[string]string, len(resp.Payload)) - for i := 0; i < len(resp.Payload); i++ { + for i := range len(resp.Payload) { v[resp.Payload[i].Key] = resp.Payload[i].Value } return v, nil @@ -250,7 +250,7 @@ func (c *Client) hosts(ctx context.Context) ([]string, error) { } v := make([]string, len(resp.Payload)) - for i := 0; i < len(resp.Payload); i++ { + for i := range len(resp.Payload) { v[i] = resp.Payload[i].Key } return v, nil @@ -391,7 +391,7 @@ func (c *Client) ShardCount(ctx context.Context, host string) (uint, error) { return 0, errors.Errorf("scylla does not expose %s metric", metricName) } - shards := len(metrics[metricName].Metric) + shards := len(metrics[metricName].GetMetric()) if shards == 0 { return 0, errors.New("missing shard count") } @@ -594,7 +594,7 @@ func (c *Client) Repair(ctx context.Context, keyspace, table, master string, rep if smallTableOpt { p.SmallTableOptimization = pointer.StringPtr("true") } else { - p.RangesParallelism = pointer.StringPtr(fmt.Sprint(intensity)) + p.RangesParallelism = pointer.StringPtr(strconv.Itoa(intensity)) } // Single node cluster repair fails with hosts param if len(replicaSet) > 1 { @@ -674,7 +674,6 @@ func (c *Client) ActiveRepairs(ctx context.Context, hosts []string) ([]string, e out := make(chan hostError, runtime.NumCPU()+1) for _, h := range hosts { - h := h go func() { a, err := c.hasActiveRepair(ctx, h) out <- hostError{ @@ -703,7 +702,7 @@ func (c *Client) ActiveRepairs(ctx context.Context, hosts []string) ([]string, e func (c *Client) hasActiveRepair(ctx context.Context, host string) (bool, error) { const wait = 50 * time.Millisecond - for i := 0; i < 10; i++ { + for range 10 { resp, err := c.scyllaOps.StorageServiceActiveRepairGet(&operations.StorageServiceActiveRepairGetParams{ Context: forceHost(ctx, host), }) @@ -919,12 +918,12 @@ func (c *Client) TotalMemory(ctx context.Context, host string) (int64, error) { } var totalMemory int64 - for _, m := range metrics[metricName].Metric { + for _, m := range metrics[metricName].GetMetric() { switch { - case m.Counter != nil && m.Counter.Value != nil: - totalMemory += int64(*m.Counter.Value) - case m.Gauge != nil && m.Gauge.Value != nil: - totalMemory += int64(*m.Gauge.Value) + case m.GetCounter() != nil: + totalMemory += int64(m.GetCounter().GetValue()) + case m.GetGauge() != nil: + totalMemory += int64(m.GetGauge().GetValue()) } } @@ -997,7 +996,7 @@ func (c *Client) TableDiskSizeReport(ctx context.Context, hostKeyspaceTables Hos size, err := c.TableDiskSize(ctx, v.Host, v.Keyspace, v.Table) if err != nil { - return parallel.Abort(errors.Wrapf(stdErrors.Join(err, ErrHostInvalidResponse), v.Host)) + return parallel.Abort(fmt.Errorf("%s: %w", v.Host, stdErrors.Join(err, ErrHostInvalidResponse))) } c.logger.Debug(ctx, "Table disk size", "host", v.Host, diff --git a/pkg/scyllaclient/config_client.go b/pkg/scyllaclient/config_client.go index 42febbd0eb..47ced8fa52 100644 --- a/pkg/scyllaclient/config_client.go +++ b/pkg/scyllaclient/config_client.go @@ -4,9 +4,9 @@ package scyllaclient import ( "context" - "fmt" "net" "net/http" + "strconv" "strings" "time" @@ -60,7 +60,7 @@ func (c *ConfigClient) NativeTransportPort(ctx context.Context) (string, error) if err != nil { return "", err } - return fmt.Sprint(resp.Payload), err + return strconv.FormatInt(resp.Payload, 10), err } // NativeTransportPortSSL returns node listen SSL port. @@ -69,7 +69,7 @@ func (c *ConfigClient) NativeTransportPortSSL(ctx context.Context) (string, erro if err != nil { return "", err } - return fmt.Sprint(resp.Payload), err + return strconv.FormatInt(resp.Payload, 10), err } // RPCAddress returns node rpc address. @@ -87,7 +87,7 @@ func (c *ConfigClient) RPCPort(ctx context.Context) (string, error) { if err != nil { return "", err } - return fmt.Sprint(resp.Payload), err + return strconv.FormatInt(resp.Payload, 10), err } // BroadcastAddress returns node broadcast address. @@ -123,7 +123,7 @@ func (c *ConfigClient) PrometheusPort(ctx context.Context) (string, error) { if err != nil { return "", err } - return fmt.Sprint(resp.Payload), err + return strconv.FormatInt(resp.Payload, 10), err } // DataDirectory returns node data directory. @@ -170,7 +170,7 @@ func (c *ConfigClient) AlternatorPort(ctx context.Context) (string, error) { if err != nil { return "", err } - return fmt.Sprint(resp.Payload), err + return strconv.FormatInt(resp.Payload, 10), err } // AlternatorAddress returns node alternator address. @@ -194,7 +194,7 @@ func (c *ConfigClient) AlternatorHTTPSPort(ctx context.Context) (string, error) if err != nil { return "", err } - return fmt.Sprint(resp.Payload), err + return strconv.FormatInt(resp.Payload, 10), err } // UUIDSStableIdentifiers returns if node is using uuid-like sstable naming. diff --git a/pkg/scyllaclient/hostpool.go b/pkg/scyllaclient/hostpool.go index 8bb6973bd4..d9664cee6b 100644 --- a/pkg/scyllaclient/hostpool.go +++ b/pkg/scyllaclient/hostpool.go @@ -57,7 +57,7 @@ func hostPool(next http.RoundTripper, pool hostpool.HostPool, port string) http. switch { case err != nil: hpr.Mark(err) - case resp.StatusCode == 401 || resp.StatusCode == 403 || resp.StatusCode >= 500: + case resp.StatusCode == http.StatusUnauthorized || resp.StatusCode == http.StatusForbidden || resp.StatusCode >= http.StatusInternalServerError: hpr.Mark(errPoolServerError) default: hpr.Mark(nil) diff --git a/pkg/scyllaclient/retry.go b/pkg/scyllaclient/retry.go index 0092c0036d..0f4c9bb9ce 100644 --- a/pkg/scyllaclient/retry.go +++ b/pkg/scyllaclient/retry.go @@ -149,7 +149,7 @@ func (t retryableTransport) Submit(operation *runtime.ClientOperation) (interfac logger: t.logger, } o.do = func() (interface{}, error) { - operation.Context = o.ctx + operation.Context = o.ctx //nolint: fatcontext return t.transport.Submit(operation) } return o.submit() diff --git a/pkg/scyllaclient/scyllaclienttest/matcher.go b/pkg/scyllaclient/scyllaclienttest/matcher.go index 134a610366..c2e86c8692 100644 --- a/pkg/scyllaclient/scyllaclienttest/matcher.go +++ b/pkg/scyllaclient/scyllaclienttest/matcher.go @@ -12,7 +12,7 @@ type Matcher func(req *http.Request) string // FileMatcher is a simple matcher created for backwards compatibility. func FileMatcher(file string) Matcher { - return func(req *http.Request) string { + return func(_ *http.Request) string { return file } } diff --git a/pkg/scyllaclient/scyllaclienttest/server.go b/pkg/scyllaclient/scyllaclienttest/server.go index 07c34b5a68..f4d59b68eb 100644 --- a/pkg/scyllaclient/scyllaclienttest/server.go +++ b/pkg/scyllaclient/scyllaclienttest/server.go @@ -97,7 +97,7 @@ func statusCodeFromFile(file string) (statusCode int) { func RespondStatus(t *testing.T, statusCodes ...int) http.Handler { t.Helper() calls := atomic.NewInt32(-1) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + return http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { idx := int(calls.Inc()) if idx >= len(statusCodes) { t.Fatal("Too many requests statusCodes out of range") diff --git a/pkg/service/backup/backupspec/dclimit.go b/pkg/service/backup/backupspec/dclimit.go index 85bff1a3f5..a70294c9a0 100644 --- a/pkg/service/backup/backupspec/dclimit.go +++ b/pkg/service/backup/backupspec/dclimit.go @@ -3,7 +3,6 @@ package backupspec import ( - "fmt" "regexp" "strconv" "strings" @@ -21,7 +20,7 @@ type DCLimit struct { } func (l DCLimit) String() string { - p := fmt.Sprint(l.Limit) + p := strconv.Itoa(l.Limit) if l.DC != "" { p = l.DC + ":" + p } diff --git a/pkg/service/backup/backupspec/manifest.go b/pkg/service/backup/backupspec/manifest.go index 14aab10c69..00aed1906f 100644 --- a/pkg/service/backup/backupspec/manifest.go +++ b/pkg/service/backup/backupspec/manifest.go @@ -206,7 +206,7 @@ func (m *ManifestContentWithIndex) IndexLength() (n int, err error) { return } - err = m.ForEachIndexIter(nil, func(fm FilesMeta) { + err = m.ForEachIndexIter(nil, func(_ FilesMeta) { n++ }) return diff --git a/pkg/service/backup/progress.go b/pkg/service/backup/progress.go index 18a0055fe0..c706aed8c8 100644 --- a/pkg/service/backup/progress.go +++ b/pkg/service/backup/progress.go @@ -204,7 +204,7 @@ func (p *progress) AvgUploadBandwidth() float64 { // ProgressVisitor knows how to iterate over list of RunProgress results. type ProgressVisitor interface { - ForEach(func(*RunProgress) error) error + ForEach(cb func(*RunProgress) error) error } type progressVisitor struct { diff --git a/pkg/service/backup/service.go b/pkg/service/backup/service.go index cbb4d222c7..4456517106 100644 --- a/pkg/service/backup/service.go +++ b/pkg/service/backup/service.go @@ -87,7 +87,7 @@ func (s *Service) Runner() Runner { // TaskDecorator generates "retention_map" for backup task. func (s *Service) TaskDecorator(schedSvc *scheduler.Service) func(ctx context.Context, clusterID, taskID uuid.UUID, properties json.RawMessage) (json.RawMessage, error) { - return func(ctx context.Context, clusterID, taskID uuid.UUID, properties json.RawMessage) (json.RawMessage, error) { + return func(ctx context.Context, clusterID, _ uuid.UUID, properties json.RawMessage) (json.RawMessage, error) { tasks, err := schedSvc.ListTasks(ctx, clusterID, scheduler.ListFilter{TaskType: []scheduler.TaskType{scheduler.BackupTask}}) if err != nil { return nil, err diff --git a/pkg/service/backup/validation.go b/pkg/service/backup/validation.go index 7274ec49c0..7e5eb6d34b 100644 --- a/pkg/service/backup/validation.go +++ b/pkg/service/backup/validation.go @@ -5,7 +5,6 @@ package backup import ( "context" "encoding/json" - "fmt" "sort" "strings" "sync" @@ -57,7 +56,7 @@ func (s *Service) ValidationRunner() ValidationRunner { // ValidateBackupTaskDecorator gets locations if not specified for validate backup task. func (s *Service) ValidateBackupTaskDecorator(schedSvc *scheduler.Service) func(ctx context.Context, clusterID, taskID uuid.UUID, properties json.RawMessage, ) (json.RawMessage, error) { - return func(ctx context.Context, clusterID, taskID uuid.UUID, properties json.RawMessage) (json.RawMessage, error) { + return func(ctx context.Context, clusterID, _ uuid.UUID, properties json.RawMessage) (json.RawMessage, error) { // If tasks contains locations return if l := s.ExtractLocations(ctx, []json.RawMessage{properties}); len(l) > 0 { return properties, nil @@ -202,7 +201,7 @@ func (s *Service) Validate(ctx context.Context, clusterID, taskID, runID uuid.UU progress.OrphanedBytes = orphanedBytes putProgress() } - p.OnDelete = func(total, success int) { + p.OnDelete = func(_, success int) { progress.DeletedFiles = success putProgress() } @@ -285,7 +284,7 @@ func (s *Service) Validate(ctx context.Context, clusterID, taskID, runID uuid.UU if !brokenSnapshots.IsEmpty() { bs := brokenSnapshots.List() sort.Strings(bs) - msg = append(msg, fmt.Sprintf("broken snapshots: %s", strings.Join(bs, ", "))) + msg = append(msg, "broken snapshots: "+strings.Join(bs, ", ")) } if !target.DeleteOrphanedFiles && orphanedFiles > 0 { msg = append(msg, "orphaned files") diff --git a/pkg/service/backup/worker_upload.go b/pkg/service/backup/worker_upload.go index d9771653f4..d57a57c07d 100644 --- a/pkg/service/backup/worker_upload.go +++ b/pkg/service/backup/worker_upload.go @@ -171,7 +171,7 @@ func (w *worker) uploadSnapshotDir(ctx context.Context, h hostInfo, d snapshotDi dataSrc = d.Path retries = 10 ) - for i := 0; i < retries; i++ { + for range retries { if err := w.uploadDataDir(ctx, h, dataDst, dataSrc, d); err != nil { if errors.Is(err, errJobNotFound) { continue diff --git a/pkg/service/cluster/service.go b/pkg/service/cluster/service.go index df0770ca38..0a9bb70778 100644 --- a/pkg/service/cluster/service.go +++ b/pkg/service/cluster/service.go @@ -148,7 +148,7 @@ func (s *Service) CreateClientNoCache(ctx context.Context, clusterID uuid.UUID) func (s *Service) clientConfig(c *Cluster) scyllaclient.Config { config := scyllaclient.DefaultConfigWithTimeout(s.timeoutConfig) if c.Port != 0 { - config.Port = fmt.Sprint(c.Port) + config.Port = strconv.Itoa(c.Port) } config.AuthToken = c.AuthToken config.Hosts = c.KnownHosts @@ -188,7 +188,7 @@ func (s *Service) discoverClusterHosts(ctx context.Context, c *Cluster) ([]strin config := scyllaclient.DefaultConfigWithTimeout(s.timeoutConfig) if c.Port != 0 { - config.Port = fmt.Sprint(c.Port) + config.Port = strconv.Itoa(c.Port) } config.AuthToken = c.AuthToken config.Hosts = []string{cp} @@ -611,7 +611,7 @@ type SessionConfigOption func(ctx context.Context, clusterID uuid.UUID, client * // SingleHostSessionConfigOption ensures that session will be connected only to the single, provided host. func SingleHostSessionConfigOption(host string) SessionConfigOption { - return func(ctx context.Context, clusterID uuid.UUID, client *scyllaclient.Client, cfg *gocql.ClusterConfig) error { + return func(ctx context.Context, _ uuid.UUID, client *scyllaclient.Client, cfg *gocql.ClusterConfig) error { ni, err := client.NodeInfo(ctx, host) if err != nil { return errors.Wrapf(err, "fetch node (%s) info", host) diff --git a/pkg/service/configcache/service.go b/pkg/service/configcache/service.go index 3894a14b1c..25060fb906 100644 --- a/pkg/service/configcache/service.go +++ b/pkg/service/configcache/service.go @@ -136,7 +136,7 @@ func (svc *Service) AvailableHosts(ctx context.Context, clusterID uuid.UUID) ([] } var availableHosts []string - clusterConfig.Range(func(key, value any) bool { + clusterConfig.Range(func(key, _ any) bool { host, ok := key.(string) if !ok { logger.Error(ctx, "Cannot cast to string", "host", key, "error", err) @@ -172,7 +172,6 @@ func (svc *Service) updateSingle(ctx context.Context, c *cluster.Cluster) bool { for _, host := range client.Config().Hosts { hostsWg.Add(1) - host := host perHostLogger := logger.Named("Cluster host config update").With("host", host) go func() { defer hostsWg.Done() @@ -200,7 +199,6 @@ func (svc *Service) updateAll(ctx context.Context) { clustersWg := sync.WaitGroup{} for _, c := range clusters { - c := c clustersWg.Add(1) go func() { defer clustersWg.Done() diff --git a/pkg/service/healthcheck/runner.go b/pkg/service/healthcheck/runner.go index fb4dbff213..71ed7faa6f 100644 --- a/pkg/service/healthcheck/runner.go +++ b/pkg/service/healthcheck/runner.go @@ -108,7 +108,7 @@ func (r runner) checkHosts(ctx context.Context, clusterID uuid.UUID, addresses [ } func (r runner) removeMetricsForCluster(clusterID uuid.UUID) { - apply(collect(r.metrics.status), func(cluster, dc, host, pt string, v float64) { + apply(collect(r.metrics.status), func(cluster, _, host, _ string, _ float64) { if clusterID.String() != cluster { return } @@ -123,7 +123,7 @@ func (r runner) removeMetricsForCluster(clusterID uuid.UUID) { } func (r runner) removeMetricsForMissingHosts(clusterID uuid.UUID, addresses []string) { - apply(collect(r.metrics.status), func(cluster, dc, host, pt string, v float64) { + apply(collect(r.metrics.status), func(cluster, _, host, _ string, _ float64) { if clusterID.String() != cluster { return } diff --git a/pkg/service/repair/progress.go b/pkg/service/repair/progress.go index a137c1a28e..a42d14bbc5 100644 --- a/pkg/service/repair/progress.go +++ b/pkg/service/repair/progress.go @@ -505,7 +505,7 @@ func (pm *dbProgressManager) AggregateProgress() (Progress, error) { var weight func(key tableKey) int64 var totalWeight int64 if totalSize == 0 { - weight = func(key tableKey) int64 { + weight = func(_ tableKey) int64 { return 1 } totalWeight = int64(len(perTable)) diff --git a/pkg/service/repair/service.go b/pkg/service/repair/service.go index 1d2e551c99..2ecc1484ba 100644 --- a/pkg/service/repair/service.go +++ b/pkg/service/repair/service.go @@ -249,7 +249,7 @@ func (s *Service) Repair(ctx context.Context, clusterID, taskID, runID uuid.UUID defer cancel() // Create worker pool - workers := workerpool.New[*worker, job, jobResult](gracefulCtx, func(ctx context.Context, i int) *worker { + workers := workerpool.New[*worker, job, jobResult](gracefulCtx, func(_ context.Context, i int) *worker { return &worker{ client: client, stopTrying: make(map[string]struct{}), diff --git a/pkg/service/restore/batch.go b/pkg/service/restore/batch.go index d7f8ee7c9f..50646e8469 100644 --- a/pkg/service/restore/batch.go +++ b/pkg/service/restore/batch.go @@ -285,7 +285,7 @@ func (bd *batchDispatcher) createBatch(dirIdx int, host string) (batch, bool) { expectedNodeWorkload := bd.expectedShardWorkload * int64(shardCnt) sizeLimit := expectedNodeWorkload / 20 for { - for j := 0; j < int(shardCnt); j++ { + for range shardCnt { if i >= len(rdp.RemainingSSTables) { break } @@ -302,7 +302,7 @@ func (bd *batchDispatcher) createBatch(dirIdx int, host string) (batch, bool) { } else { // Create batch containing node_shard_count*batch_size sstables. i = min(bd.batchSize*int(shardCnt), len(rdp.RemainingSSTables)) - for j := 0; j < i; j++ { + for j := range i { size += rdp.RemainingSSTables[j].Size } } diff --git a/pkg/testutils/db/db.go b/pkg/testutils/db/db.go index 6c54e4641a..5d59b6ac5d 100644 --- a/pkg/testutils/db/db.go +++ b/pkg/testutils/db/db.go @@ -8,6 +8,7 @@ import ( "fmt" "net" "os" + "strconv" "strings" "sync" "testing" @@ -240,7 +241,7 @@ func RawWriteData(t *testing.T, session gocqlx.Session, keyspace string, startin t.Fatal(err) } - for i := 0; i < rowsCnt; i++ { + for i := range rowsCnt { if err := q.Bind(i+startingID, data).Exec(); err != nil { t.Fatal(err) } @@ -404,7 +405,7 @@ func CreateDynamoDBService(t *testing.T, host string, alternatorPort int, access t.Helper() awsCfg := &aws.Config{ - Endpoint: aws.String("http://" + net.JoinHostPort(host, fmt.Sprint(alternatorPort))), + Endpoint: aws.String("http://" + net.JoinHostPort(host, strconv.Itoa(alternatorPort))), Credentials: credentials.NewStaticCredentialsFromCreds(credentials.Value{ AccessKeyID: accessKeyID, SecretAccessKey: secretAccessKey, diff --git a/pkg/testutils/matchers.go b/pkg/testutils/matchers.go index 217e11c46a..d1387e1454 100644 --- a/pkg/testutils/matchers.go +++ b/pkg/testutils/matchers.go @@ -3,8 +3,6 @@ package testutils import ( - "fmt" - "github.com/google/go-cmp/cmp" "github.com/scylladb/scylla-manager/v3/pkg/util/uuid" ) @@ -29,5 +27,5 @@ func (m UUIDMatcher) Matches(v interface{}) bool { } func (m *UUIDMatcher) String() string { - return fmt.Sprintf("is equal to: %s", m.expected.String()) + return "is equal to: " + m.expected.String() } diff --git a/testing/minio/go.mod b/testing/minio/go.mod index 0d1992dde8..a4e20d6e96 100644 --- a/testing/minio/go.mod +++ b/testing/minio/go.mod @@ -1,3 +1,3 @@ module _ -go 1.21 +go 1.23 diff --git a/v3/pkg/managerclient/go.mod b/v3/pkg/managerclient/go.mod index f739fbe1bb..d0f7a7ca70 100644 --- a/v3/pkg/managerclient/go.mod +++ b/v3/pkg/managerclient/go.mod @@ -1,6 +1,6 @@ module github.com/scylladb/scylla-manager/v3/pkg/managerclient -go 1.21.1 +go 1.23.2 require ( github.com/go-openapi/runtime v0.28.0 diff --git a/v3/pkg/util/go.mod b/v3/pkg/util/go.mod index 26c3d4e792..764bb2d9cd 100644 --- a/v3/pkg/util/go.mod +++ b/v3/pkg/util/go.mod @@ -1,6 +1,6 @@ module github.com/scylladb/scylla-manager/v3/pkg/util -go 1.21.1 +go 1.23.2 require ( github.com/cenkalti/backoff/v4 v4.3.0 @@ -12,6 +12,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.57.0 + github.com/robfig/cron/v3 v3.0.1 github.com/scylladb/go-log v0.0.7 github.com/scylladb/go-set v1.0.2 github.com/scylladb/gocqlx/v2 v2.8.0 @@ -26,7 +27,6 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/robfig/cron/v3 v3.0.1 // indirect github.com/scylladb/go-reflectx v1.0.1 // indirect go.uber.org/zap v1.21.0 // indirect golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect diff --git a/v3/swagger/go.mod b/v3/swagger/go.mod index 0f89e87a87..715caf1002 100644 --- a/v3/swagger/go.mod +++ b/v3/swagger/go.mod @@ -1,6 +1,6 @@ module github.com/scylladb/scylla-manager/v3/swagger -go 1.21.1 +go 1.23.2 require ( github.com/go-openapi/errors v0.22.0