From 27c2d27e23e76243bb49ec5d803a6e40b3f96f7a Mon Sep 17 00:00:00 2001 From: Drew Erny Date: Thu, 20 Jun 2019 14:02:39 -0500 Subject: [PATCH] add golangci-lint gometalinter is deprecated, and golangci-lint is its recommended successor. This commit adds golangci-lint as the linter for swarmkit. In addition, golangci-lint found a few issues in the code that were not yet identified, and so those issues have been fixed. Signed-off-by: Drew Erny --- .golangci.yml | 14 ++++++++++++++ .gometalinter.json | 17 ----------------- agent/agent.go | 2 +- agent/exec/dockerapi/controller.go | 2 +- agent/session.go | 4 ++-- cmd/swarmctl/service/flagparser/tmpfs.go | 2 +- direct.mk | 6 +++--- manager/dispatcher/dispatcher.go | 2 +- manager/drivers/provider.go | 2 +- manager/orchestrator/restart/restart.go | 9 +-------- node/node.go | 2 +- 11 files changed, 26 insertions(+), 36 deletions(-) create mode 100644 .golangci.yml delete mode 100644 .gometalinter.json diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000000..694ae5c372 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,14 @@ +run: + tests: false +linters: + disable-all: true + enable: + - misspell + - gofmt + - goimports + - golint + - ineffassign + - deadcode + - unconvert + - govet + diff --git a/.gometalinter.json b/.gometalinter.json deleted file mode 100644 index 6710a180dc..0000000000 --- a/.gometalinter.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "Vendor": true, - "Exclude": [ - ".*\\.pb\\.go" - ], - "Enable": [ - "vet", - "misspell", - "gofmt", - "goimports", - "golint", - "ineffassign", - "deadcode", - "unconvert" - ], - "Deadline": "2m" -} diff --git a/agent/agent.go b/agent/agent.go index 743072f9da..58ebff5934 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -575,7 +575,7 @@ func (a *Agent) nodeDescriptionWithHostname(ctx context.Context, tlsInfo *api.No // Override hostname and TLS info if desc != nil { - if a.config.Hostname != "" && desc != nil { + if a.config.Hostname != "" { desc.Hostname = a.config.Hostname } desc.TLSInfo = tlsInfo diff --git a/agent/exec/dockerapi/controller.go b/agent/exec/dockerapi/controller.go index 1450fbdc36..abb2e15e90 100644 --- a/agent/exec/dockerapi/controller.go +++ b/agent/exec/dockerapi/controller.go @@ -654,7 +654,7 @@ func parsePortMap(portMap nat.PortMap) ([]*api.PortConfig, error) { return nil, err } - protocol := api.ProtocolTCP + var protocol api.PortConfig_Protocol switch strings.ToLower(parts[1]) { case "tcp": protocol = api.ProtocolTCP diff --git a/agent/session.go b/agent/session.go index 526953509b..152b5c4546 100644 --- a/agent/session.go +++ b/agent/session.go @@ -136,7 +136,7 @@ func (s *session) start(ctx context.Context, description *api.NodeDescription) e // `ctx` is done and hence fail to propagate the timeout error to the agent. // If the error is not propogated to the agent, the agent will not close // the session or rebuild a new session. - sessionCtx, cancelSession := context.WithCancel(ctx) // nolint: vet + sessionCtx, cancelSession := context.WithCancel(ctx) //nolint:govet // Need to run Session in a goroutine since there's no way to set a // timeout for an individual Recv call in a stream. @@ -159,7 +159,7 @@ func (s *session) start(ctx context.Context, description *api.NodeDescription) e select { case err := <-errChan: if err != nil { - return err // nolint: vet + return err //nolint:govet } case <-time.After(dispatcherRPCTimeout): cancelSession() diff --git a/cmd/swarmctl/service/flagparser/tmpfs.go b/cmd/swarmctl/service/flagparser/tmpfs.go index 36d9e26da7..8b42696082 100644 --- a/cmd/swarmctl/service/flagparser/tmpfs.go +++ b/cmd/swarmctl/service/flagparser/tmpfs.go @@ -64,7 +64,7 @@ func parseTmpfs(flags *pflag.FlagSet, spec *api.ServiceSpec) error { // remove suffix and try again suffix := meat[len(meat)-1] meat = meat[:len(meat)-1] - var multiplier int64 = 1 + var multiplier int64 switch suffix { case 'g': multiplier = 1 << 30 diff --git a/direct.mk b/direct.mk index 0cdeff946a..4e1f4bf216 100644 --- a/direct.mk +++ b/direct.mk @@ -39,8 +39,8 @@ version/version.go: setup: ## install dependencies @echo "🐳 $@" # TODO(stevvooe): Install these from the vendor directory - @go get -u github.com/alecthomas/gometalinter - @gometalinter --install + # install golangci-lint version 1.17.1 to ./bin/golangci-lint + @curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s v1.17.1 @go get -u github.com/lk4d4/vndr @go get -u github.com/stevvooe/protobuild @@ -65,7 +65,7 @@ checkprotos: generate ## check if protobufs needs to be generated again check: fmt-proto check: ## Run various source code validation tools @echo "🐳 $@" - @gometalinter ./... + @./bin/golangci-lint run .PHONY: fmt-proto fmt-proto: diff --git a/manager/dispatcher/dispatcher.go b/manager/dispatcher/dispatcher.go index 6149806470..d1db2fdc83 100644 --- a/manager/dispatcher/dispatcher.go +++ b/manager/dispatcher/dispatcher.go @@ -238,7 +238,7 @@ func (d *Dispatcher) Run(ctx context.Context) error { if err != nil { return err } - if err == nil && len(clusters) == 1 { + if len(clusters) == 1 { heartbeatPeriod, err := gogotypes.DurationFromProto(clusters[0].Spec.Dispatcher.HeartbeatPeriod) if err == nil && heartbeatPeriod > 0 { d.config.HeartbeatPeriod = heartbeatPeriod diff --git a/manager/drivers/provider.go b/manager/drivers/provider.go index 0d9be6119d..97c36fe73d 100644 --- a/manager/drivers/provider.go +++ b/manager/drivers/provider.go @@ -22,7 +22,7 @@ func (m *DriverProvider) NewSecretDriver(driver *api.Driver) (*SecretDriver, err if m.pluginGetter == nil { return nil, fmt.Errorf("plugin getter is nil") } - if driver == nil && driver.Name == "" { + if driver == nil || driver.Name == "" { return nil, fmt.Errorf("driver specification is nil") } // Search for the specified plugin diff --git a/manager/orchestrator/restart/restart.go b/manager/orchestrator/restart/restart.go index ed7bf3e584..2b2a087aac 100644 --- a/manager/orchestrator/restart/restart.go +++ b/manager/orchestrator/restart/restart.go @@ -516,20 +516,13 @@ func (r *Supervisor) Cancel(taskID string) { <-delay.doneCh } -// CancelAll aborts all pending restarts and waits for any instances of -// StartNow that have already triggered to complete. +// CancelAll aborts all pending restarts func (r *Supervisor) CancelAll() { - var cancelled []delayedStart - r.mu.Lock() for _, delay := range r.delays { delay.cancel() } r.mu.Unlock() - - for _, delay := range cancelled { - <-delay.doneCh - } } // ClearServiceHistory forgets restart history related to a given service ID. diff --git a/node/node.go b/node/node.go index f82fc139d6..4655c993ba 100644 --- a/node/node.go +++ b/node/node.go @@ -33,7 +33,7 @@ import ( "github.com/docker/swarmkit/manager/encryption" "github.com/docker/swarmkit/remotes" "github.com/docker/swarmkit/xnet" - "github.com/grpc-ecosystem/go-grpc-prometheus" + grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/pkg/errors" "github.com/sirupsen/logrus" bolt "go.etcd.io/bbolt"