diff --git a/.gometalinter.json b/.gometalinter.json new file mode 100644 index 0000000000..c20515ad37 --- /dev/null +++ b/.gometalinter.json @@ -0,0 +1,18 @@ +{ + "Vendor": true, + "Exclude": [ + ".*\\.pb\\.go" + ], + "Enable": [ + "vet", + "misspell", + "gofmt", + "goimports", + "golint", + "gosimple", + "ineffassign", + "deadcode", + "unconvert" + ], + "Deadline": "2m" +} diff --git a/agent/agent.go b/agent/agent.go index 4d8f99cfcd..743072f9da 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -2,6 +2,7 @@ package agent import ( "bytes" + "context" "math/rand" "reflect" "sync" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" "github.com/pkg/errors" - "golang.org/x/net/context" ) const ( diff --git a/agent/agent_test.go b/agent/agent_test.go index 8b84e957b2..49c33b908a 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -1,6 +1,7 @@ package agent import ( + "context" "crypto/tls" "errors" "fmt" @@ -25,7 +26,6 @@ import ( "github.com/docker/swarmkit/xnet" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) var localDispatcher = false @@ -90,7 +90,8 @@ func TestAgentStartStop(t *testing.T) { require.NoError(t, err) assert.NotNil(t, agent) - ctx, _ := context.WithTimeout(tc.Context, 5000*time.Millisecond) + ctx, cancel := context.WithTimeout(tc.Context, 5000*time.Millisecond) + defer cancel() assert.Equal(t, errAgentNotStarted, agent.Stop(ctx)) assert.NoError(t, agent.Start(ctx)) diff --git a/agent/errors.go b/agent/errors.go index 29f8ff1c9f..f5514d8311 100644 --- a/agent/errors.go +++ b/agent/errors.go @@ -13,10 +13,5 @@ var ( errAgentStarted = errors.New("agent: already started") errAgentNotStarted = errors.New("agent: not started") - errTaskNoController = errors.New("agent: no task controller") - errTaskNotAssigned = errors.New("agent: task not assigned") - errTaskStatusUpdateNoChange = errors.New("agent: no change in task status") - errTaskUnknown = errors.New("agent: task unknown") - - errTaskInvalid = errors.New("task: invalid") + errTaskUnknown = errors.New("agent: task unknown") ) diff --git a/agent/exec/controller.go b/agent/exec/controller.go index c9e9343fd7..b617d37ca3 100644 --- a/agent/exec/controller.go +++ b/agent/exec/controller.go @@ -1,6 +1,7 @@ package exec import ( + "context" "fmt" "time" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/protobuf/ptypes" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" ) // Controller controls execution of a task. diff --git a/agent/exec/controller_stub.go b/agent/exec/controller_stub.go index 076955ff80..dd16ce457d 100644 --- a/agent/exec/controller_stub.go +++ b/agent/exec/controller_stub.go @@ -1,10 +1,11 @@ package exec import ( - "github.com/docker/swarmkit/api" - "golang.org/x/net/context" + "context" "runtime" "strings" + + "github.com/docker/swarmkit/api" ) // StubController implements the Controller interface, diff --git a/agent/exec/controller_test.go b/agent/exec/controller_test.go index 2de4f436f3..76634056a2 100644 --- a/agent/exec/controller_test.go +++ b/agent/exec/controller_test.go @@ -1,6 +1,7 @@ package exec import ( + "context" "errors" "fmt" "runtime" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/log" gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) func TestResolve(t *testing.T) { diff --git a/agent/exec/dockerapi/adapter.go b/agent/exec/dockerapi/adapter.go index 45943dd9ea..fd3cab4b31 100644 --- a/agent/exec/dockerapi/adapter.go +++ b/agent/exec/dockerapi/adapter.go @@ -1,6 +1,7 @@ package dockerapi import ( + "context" "encoding/json" "fmt" "io" @@ -16,7 +17,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "golang.org/x/time/rate" ) @@ -144,15 +144,13 @@ func (c *containerAdapter) removeNetworks(ctx context.Context) error { } func (c *containerAdapter) create(ctx context.Context) error { - if _, err := c.client.ContainerCreate(ctx, + _, err := c.client.ContainerCreate(ctx, c.container.config(), c.container.hostConfig(), c.container.networkingConfig(), - c.container.name()); err != nil { - return err - } + c.container.name()) - return nil + return err } func (c *containerAdapter) start(ctx context.Context) error { diff --git a/agent/exec/dockerapi/controller.go b/agent/exec/dockerapi/controller.go index 12bac6ec63..1450fbdc36 100644 --- a/agent/exec/dockerapi/controller.go +++ b/agent/exec/dockerapi/controller.go @@ -3,6 +3,7 @@ package dockerapi import ( "bufio" "bytes" + "context" "encoding/binary" "fmt" "io" @@ -19,7 +20,6 @@ import ( "github.com/docker/swarmkit/log" gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" - "golang.org/x/net/context" "golang.org/x/time/rate" ) diff --git a/agent/exec/dockerapi/controller_integration_test.go b/agent/exec/dockerapi/controller_integration_test.go index 3c4d6866d5..7e766e051a 100644 --- a/agent/exec/dockerapi/controller_integration_test.go +++ b/agent/exec/dockerapi/controller_integration_test.go @@ -1,6 +1,7 @@ package dockerapi import ( + "context" "flag" "testing" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api/genericresource" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) var ( diff --git a/agent/exec/dockerapi/controller_test.go b/agent/exec/dockerapi/controller_test.go index 7c95fabbe4..2ec2e8af52 100644 --- a/agent/exec/dockerapi/controller_test.go +++ b/agent/exec/dockerapi/controller_test.go @@ -2,6 +2,7 @@ package dockerapi import ( "bytes" + "context" "fmt" "io" "io/ioutil" @@ -20,7 +21,6 @@ import ( "github.com/docker/swarmkit/log" gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) var tenSecond = 10 * time.Second diff --git a/agent/exec/dockerapi/docker_client_stub.go b/agent/exec/dockerapi/docker_client_stub.go index 653f3df1a8..41ee3ee89c 100644 --- a/agent/exec/dockerapi/docker_client_stub.go +++ b/agent/exec/dockerapi/docker_client_stub.go @@ -1,16 +1,17 @@ package dockerapi import ( + "context" + "io" + "runtime" + "strings" + "time" + "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/events" "github.com/docker/docker/api/types/network" "github.com/docker/docker/client" - "golang.org/x/net/context" - "io" - "runtime" - "strings" - "time" ) // StubAPIClient implements the client.APIClient interface, but allows diff --git a/agent/exec/dockerapi/executor.go b/agent/exec/dockerapi/executor.go index 6601ce224b..011164596c 100644 --- a/agent/exec/dockerapi/executor.go +++ b/agent/exec/dockerapi/executor.go @@ -1,8 +1,10 @@ package dockerapi import ( + "context" "sort" "strings" + "sync" "github.com/docker/docker/api/types/filters" engineapi "github.com/docker/docker/client" @@ -10,8 +12,6 @@ import ( "github.com/docker/swarmkit/agent/secrets" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" - "golang.org/x/net/context" - "sync" ) type executor struct { diff --git a/agent/exec/executor.go b/agent/exec/executor.go index 8c3fd03506..26c1bfcba7 100644 --- a/agent/exec/executor.go +++ b/agent/exec/executor.go @@ -1,8 +1,9 @@ package exec import ( + "context" + "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) // Executor provides controllers for tasks. diff --git a/agent/helpers.go b/agent/helpers.go index 5fdf166059..5e95d93297 100644 --- a/agent/helpers.go +++ b/agent/helpers.go @@ -1,6 +1,6 @@ package agent -import "golang.org/x/net/context" +import "context" // runctx blocks until the function exits, closed is closed, or the context is // cancelled. Call as part of go statement. diff --git a/agent/reporter.go b/agent/reporter.go index 73e6ab3fd9..2afb75795f 100644 --- a/agent/reporter.go +++ b/agent/reporter.go @@ -1,12 +1,12 @@ package agent import ( + "context" "reflect" "sync" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" - "golang.org/x/net/context" ) // StatusReporter receives updates to task status. Method may be called diff --git a/agent/reporter_test.go b/agent/reporter_test.go index d0b5dc6d8e..fcafec5a8c 100644 --- a/agent/reporter_test.go +++ b/agent/reporter_test.go @@ -1,6 +1,7 @@ package agent import ( + "context" "errors" "fmt" "math/rand" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) type uniqueStatus struct { diff --git a/agent/resource.go b/agent/resource.go index 8e88d2cd65..32be069c11 100644 --- a/agent/resource.go +++ b/agent/resource.go @@ -1,8 +1,9 @@ package agent import ( + "context" + "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) type resourceAllocator struct { diff --git a/agent/session.go b/agent/session.go index 8c01d08fdd..526953509b 100644 --- a/agent/session.go +++ b/agent/session.go @@ -1,6 +1,7 @@ package agent import ( + "context" "errors" "sync" "time" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/connectionbroker" "github.com/docker/swarmkit/log" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -17,7 +17,6 @@ import ( var ( dispatcherRPCTimeout = 5 * time.Second - errSessionDisconnect = errors.New("agent: session disconnect") // instructed to disconnect errSessionClosed = errors.New("agent: session closed") ) @@ -137,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) + sessionCtx, cancelSession := context.WithCancel(ctx) // nolint: vet // Need to run Session in a goroutine since there's no way to set a // timeout for an individual Recv call in a stream. @@ -160,7 +159,7 @@ func (s *session) start(ctx context.Context, description *api.NodeDescription) e select { case err := <-errChan: if err != nil { - return err + return err // nolint: vet } case <-time.After(dispatcherRPCTimeout): cancelSession() diff --git a/agent/task.go b/agent/task.go index 95fe93179b..17c713c092 100644 --- a/agent/task.go +++ b/agent/task.go @@ -1,6 +1,7 @@ package agent import ( + "context" "sync" "time" @@ -8,7 +9,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api/equality" "github.com/docker/swarmkit/log" - "golang.org/x/net/context" ) // taskManager manages all aspects of task execution and reporting for an agent diff --git a/agent/task_test.go b/agent/task_test.go index 3a6afce51b..85b83ddba2 100644 --- a/agent/task_test.go +++ b/agent/task_test.go @@ -1,6 +1,7 @@ package agent import ( + "context" "testing" "time" @@ -8,7 +9,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) func init() { diff --git a/agent/testutils/fakes.go b/agent/testutils/fakes.go index b2e5c81150..150d06935f 100644 --- a/agent/testutils/fakes.go +++ b/agent/testutils/fakes.go @@ -1,6 +1,7 @@ package testutils import ( + "context" "io/ioutil" "net" "os" @@ -17,7 +18,6 @@ import ( "github.com/docker/swarmkit/identity" "github.com/docker/swarmkit/log" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) // TestExecutor is executor for integration tests @@ -140,17 +140,13 @@ func (m *MockDispatcher) UpdateTaskStatus(context.Context, *api.UpdateTaskStatus // Tasks keeps an open stream until canceled func (m *MockDispatcher) Tasks(_ *api.TasksRequest, stream api.Dispatcher_TasksServer) error { - select { - case <-stream.Context().Done(): - } + <-stream.Context().Done() return nil } // Assignments keeps an open stream until canceled func (m *MockDispatcher) Assignments(_ *api.AssignmentsRequest, stream api.Dispatcher_AssignmentsServer) error { - select { - case <-stream.Context().Done(): - } + <-stream.Context().Done() return nil } diff --git a/agent/worker.go b/agent/worker.go index 8125145d21..efe538afa7 100644 --- a/agent/worker.go +++ b/agent/worker.go @@ -1,6 +1,7 @@ package agent import ( + "context" "sync" "github.com/docker/swarmkit/agent/exec" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/watch" "github.com/sirupsen/logrus" bolt "go.etcd.io/bbolt" - "golang.org/x/net/context" ) // Worker implements the core task management logic and persistence. It diff --git a/agent/worker_test.go b/agent/worker_test.go index f75335f8bf..b5af5cc6e2 100644 --- a/agent/worker_test.go +++ b/agent/worker_test.go @@ -1,6 +1,7 @@ package agent import ( + "context" "testing" "github.com/docker/swarmkit/agent/exec" @@ -9,7 +10,6 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" bolt "go.etcd.io/bbolt" - "golang.org/x/net/context" ) type testPublisherProvider struct { diff --git a/api/genericresource/resource_management.go b/api/genericresource/resource_management.go index a89a118d62..506257ab97 100644 --- a/api/genericresource/resource_management.go +++ b/api/genericresource/resource_management.go @@ -2,6 +2,7 @@ package genericresource import ( "fmt" + "github.com/docker/swarmkit/api" ) diff --git a/api/genericresource/validate.go b/api/genericresource/validate.go index eee3706c74..0ad49ff75f 100644 --- a/api/genericresource/validate.go +++ b/api/genericresource/validate.go @@ -2,6 +2,7 @@ package genericresource import ( "fmt" + "github.com/docker/swarmkit/api" ) diff --git a/ca/auth.go b/ca/auth.go index df4547fb13..e0ff898c19 100644 --- a/ca/auth.go +++ b/ca/auth.go @@ -1,6 +1,7 @@ package ca import ( + "context" "crypto/tls" "crypto/x509/pkix" "strings" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/peer" diff --git a/ca/certificates.go b/ca/certificates.go index ad2be2c571..dd0297ab4f 100644 --- a/ca/certificates.go +++ b/ca/certificates.go @@ -2,6 +2,7 @@ package ca import ( "bytes" + "context" "crypto" "crypto/ecdsa" "crypto/elliptic" @@ -31,7 +32,6 @@ import ( "github.com/docker/swarmkit/ioutils" "github.com/opencontainers/go-digest" "github.com/pkg/errors" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" diff --git a/ca/certificates_test.go b/ca/certificates_test.go index 55435889cd..9feb479bff 100644 --- a/ca/certificates_test.go +++ b/ca/certificates_test.go @@ -1,6 +1,7 @@ package ca_test import ( + "context" "crypto/ecdsa" "crypto/elliptic" cryptorand "crypto/rand" @@ -38,7 +39,6 @@ import ( "github.com/phayes/permbits" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" "google.golang.org/grpc/status" ) @@ -706,12 +706,10 @@ func TestGetRemoteSignedCertificateWithPending(t *testing.T) { var node *api.Node // wait for a new node to show up for node == nil { - select { - case event := <-updates: // we want to skip the first node, which is the test CA - n := event.(api.EventCreateNode).Node.Copy() - if n.Certificate.Status.State == api.IssuanceStatePending { - node = n - } + event := <-updates // we want to skip the first node, which is the test CA + n := event.(api.EventCreateNode).Node.Copy() + if n.Certificate.Status.State == api.IssuanceStatePending { + node = n } } @@ -748,7 +746,8 @@ func TestGetRemoteSignedCertificateWithPending(t *testing.T) { // make sure if we time out the GetRemoteSignedCertificate call, it cancels immediately and doesn't keep // polling the status go func() { - ctx, _ := context.WithTimeout(tc.Context, 1*time.Second) + ctx, cancel := context.WithTimeout(tc.Context, 1*time.Second) + defer cancel() _, err := ca.GetRemoteSignedCertificate(ctx, csr, tc.RootCA.Pool, ca.CertificateRequestConfig{ Token: tc.WorkerToken, diff --git a/ca/config.go b/ca/config.go index 4a7230ac2f..4befee5bcc 100644 --- a/ca/config.go +++ b/ca/config.go @@ -1,6 +1,7 @@ package ca import ( + "context" cryptorand "crypto/rand" "crypto/tls" "crypto/x509" @@ -23,8 +24,6 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" "google.golang.org/grpc/credentials" - - "golang.org/x/net/context" ) const ( @@ -32,7 +31,6 @@ const ( rootCAKeyFilename = "swarm-root-ca.key" nodeTLSCertFilename = "swarm-node.crt" nodeTLSKeyFilename = "swarm-node.key" - nodeCSRFilename = "swarm-node.csr" // DefaultRootCN represents the root CN that we should create roots CAs with by default DefaultRootCN = "swarm-ca" @@ -626,10 +624,10 @@ func calculateRandomExpiry(validFrom, validUntil time.Time) time.Duration { if maxValidity-minValidity < 1 { randomExpiry = minValidity } else { - randomExpiry = rand.Intn(maxValidity-minValidity) + int(minValidity) + randomExpiry = rand.Intn(maxValidity-minValidity) + minValidity } - expiry := validFrom.Add(time.Duration(randomExpiry) * time.Minute).Sub(time.Now()) + expiry := time.Until(validFrom.Add(time.Duration(randomExpiry) * time.Minute)) if expiry < 0 { return 0 } diff --git a/ca/config_test.go b/ca/config_test.go index 98f6755a45..804b96dbb3 100644 --- a/ca/config_test.go +++ b/ca/config_test.go @@ -2,6 +2,7 @@ package ca_test import ( "bytes" + "context" "crypto/tls" "crypto/x509" "fmt" @@ -16,8 +17,6 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials" - "golang.org/x/net/context" - cfconfig "github.com/cloudflare/cfssl/config" "github.com/cloudflare/cfssl/helpers" "github.com/docker/swarmkit/api" @@ -788,24 +787,22 @@ func TestRenewTLSConfigUpdatesRootNonUnknownAuthError(t *testing.T) { go func() { updates, cancel := state.Watch(tc.MemoryStore.WatchQueue(), api.EventCreateNode{}) defer cancel() - select { - case event := <-updates: // we want to skip the first node, which is the test CA - n := event.(api.EventCreateNode).Node - if n.Certificate.Status.State == api.IssuanceStatePending { - signErr <- tc.MemoryStore.Update(func(tx store.Tx) error { - node := store.GetNode(tx, n.ID) - certChain, err := rootCA.ParseValidateAndSignCSR(node.Certificate.CSR, node.Certificate.CN, ca.WorkerRole, tc.Organization) - if err != nil { - return err - } - node.Certificate.Certificate = cautils.ReDateCert(t, certChain, cert, key, time.Now().Add(-5*time.Hour), time.Now().Add(-4*time.Hour)) - node.Certificate.Status = api.IssuanceStatus{ - State: api.IssuanceStateIssued, - } - return store.UpdateNode(tx, node) - }) - return - } + event := <-updates // we want to skip the first node, which is the test CA + n := event.(api.EventCreateNode).Node + if n.Certificate.Status.State == api.IssuanceStatePending { + signErr <- tc.MemoryStore.Update(func(tx store.Tx) error { + node := store.GetNode(tx, n.ID) + certChain, err := rootCA.ParseValidateAndSignCSR(node.Certificate.CSR, node.Certificate.CN, ca.WorkerRole, tc.Organization) + if err != nil { + return err + } + node.Certificate.Certificate = cautils.ReDateCert(t, certChain, cert, key, time.Now().Add(-5*time.Hour), time.Now().Add(-4*time.Hour)) + node.Certificate.Status = api.IssuanceStatus{ + State: api.IssuanceStateIssued, + } + return store.UpdateNode(tx, node) + }) + return } }() diff --git a/ca/external.go b/ca/external.go index 789361eb61..6b81204595 100644 --- a/ca/external.go +++ b/ca/external.go @@ -2,6 +2,7 @@ package ca import ( "bytes" + "context" cryptorand "crypto/rand" "crypto/tls" "crypto/x509" @@ -21,7 +22,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "golang.org/x/net/context/ctxhttp" ) diff --git a/ca/external_test.go b/ca/external_test.go index 7018ba1f95..17272dfbd5 100644 --- a/ca/external_test.go +++ b/ca/external_test.go @@ -113,9 +113,7 @@ func TestExternalCASignRequestTimesOut(t *testing.T) { mux := http.NewServeMux() mux.HandleFunc("/", func(http.ResponseWriter, *http.Request) { // hang forever - select { - case <-allDone: - } + <-allDone }) server := httptest.NewServer(mux) diff --git a/ca/forward.go b/ca/forward.go index a05cf53aaf..7ad7c7dd0b 100644 --- a/ca/forward.go +++ b/ca/forward.go @@ -1,7 +1,8 @@ package ca import ( - "golang.org/x/net/context" + "context" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" ) diff --git a/ca/renewer.go b/ca/renewer.go index 2a2fae7808..e5d165f6a8 100644 --- a/ca/renewer.go +++ b/ca/renewer.go @@ -1,6 +1,7 @@ package ca import ( + "context" "sync" "time" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" ) // RenewTLSExponentialBackoff sets the exponential backoff when trying to renew TLS certificates that have expired diff --git a/ca/renewer_test.go b/ca/renewer_test.go index b8ce3f81be..a0f3cd3258 100644 --- a/ca/renewer_test.go +++ b/ca/renewer_test.go @@ -1,6 +1,7 @@ package ca_test import ( + "context" "testing" "time" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestForceRenewTLSConfig(t *testing.T) { diff --git a/ca/server.go b/ca/server.go index a456df7900..c3e8999f89 100644 --- a/ca/server.go +++ b/ca/server.go @@ -2,6 +2,7 @@ package ca import ( "bytes" + "context" "crypto/subtle" "crypto/x509" "sync" @@ -15,7 +16,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/ca/server_test.go b/ca/server_test.go index d70b1cd0f3..4b74d29a32 100644 --- a/ca/server_test.go +++ b/ca/server_test.go @@ -2,6 +2,7 @@ package ca_test import ( "bytes" + "context" "crypto/tls" "crypto/x509" "fmt" @@ -25,7 +26,6 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" "google.golang.org/grpc/codes" ) diff --git a/ca/testutils/cautils.go b/ca/testutils/cautils.go index c3b086ed76..eb8ca882c1 100644 --- a/ca/testutils/cautils.go +++ b/ca/testutils/cautils.go @@ -1,6 +1,7 @@ package testutils import ( + "context" "crypto" cryptorand "crypto/rand" "crypto/tls" @@ -29,7 +30,6 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) diff --git a/ca/transport.go b/ca/transport.go index 35943afbcb..69c4379b36 100644 --- a/ca/transport.go +++ b/ca/transport.go @@ -1,6 +1,7 @@ package ca import ( + "context" "crypto/tls" "crypto/x509" "crypto/x509/pkix" @@ -9,7 +10,6 @@ import ( "sync" "github.com/pkg/errors" - "golang.org/x/net/context" "google.golang.org/grpc/credentials" ) @@ -18,12 +18,6 @@ var ( alpnProtoStr = []string{"h2"} ) -type timeoutError struct{} - -func (timeoutError) Error() string { return "mutablecredentials: Dial timed out" } -func (timeoutError) Timeout() bool { return true } -func (timeoutError) Temporary() bool { return true } - // MutableTLSCreds is the credentials required for authenticating a connection using TLS. type MutableTLSCreds struct { // Mutex for the tls config diff --git a/cmd/swarm-bench/benchmark.go b/cmd/swarm-bench/benchmark.go index fe2b61f276..312649e502 100644 --- a/cmd/swarm-bench/benchmark.go +++ b/cmd/swarm-bench/benchmark.go @@ -1,13 +1,13 @@ package main import ( + "context" "fmt" "os" "strconv" "time" "github.com/docker/swarmkit/api" - "golang.org/x/net/context" "google.golang.org/grpc" ) diff --git a/cmd/swarm-bench/collector.go b/cmd/swarm-bench/collector.go index 62d5022868..7c886bbec9 100644 --- a/cmd/swarm-bench/collector.go +++ b/cmd/swarm-bench/collector.go @@ -1,6 +1,7 @@ package main import ( + "context" "fmt" "io" "net" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/rcrowley/go-metrics" - "golang.org/x/net/context" ) // Collector waits for tasks to phone home while collecting statistics. @@ -23,10 +23,7 @@ type Collector struct { func (c *Collector) Listen(port int) error { var err error c.ln, err = net.Listen("tcp", ":"+strconv.Itoa(port)) - if err != nil { - return err - } - return nil + return err } // Collect blocks until `count` tasks phoned home. diff --git a/cmd/swarm-bench/main.go b/cmd/swarm-bench/main.go index 8dab2244d8..445c7cace3 100644 --- a/cmd/swarm-bench/main.go +++ b/cmd/swarm-bench/main.go @@ -1,12 +1,12 @@ package main import ( + "context" "errors" "os" "time" "github.com/spf13/cobra" - "golang.org/x/net/context" ) var ( diff --git a/cmd/swarm-rafttool/common.go b/cmd/swarm-rafttool/common.go index a169b9af6e..dddb6e2428 100644 --- a/cmd/swarm-rafttool/common.go +++ b/cmd/swarm-rafttool/common.go @@ -1,13 +1,12 @@ package main import ( + "context" "errors" "io/ioutil" "os" "path/filepath" - "golang.org/x/net/context" - "github.com/coreos/etcd/pkg/fileutil" "github.com/coreos/etcd/wal/walpb" "github.com/docker/swarmkit/ca" diff --git a/cmd/swarmctl/cluster/common.go b/cmd/swarmctl/cluster/common.go index 0f9a922d1d..a667d05fbd 100644 --- a/cmd/swarmctl/cluster/common.go +++ b/cmd/swarmctl/cluster/common.go @@ -1,10 +1,9 @@ package cluster import ( + "context" "fmt" - "golang.org/x/net/context" - "github.com/docker/swarmkit/api" ) diff --git a/cmd/swarmctl/common/common.go b/cmd/swarmctl/common/common.go index 5872a77258..4f27e1a670 100644 --- a/cmd/swarmctl/common/common.go +++ b/cmd/swarmctl/common/common.go @@ -1,6 +1,7 @@ package common import ( + "context" "crypto/tls" "net" "strings" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/xnet" "github.com/spf13/cobra" "github.com/spf13/pflag" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) diff --git a/cmd/swarmctl/common/resolver.go b/cmd/swarmctl/common/resolver.go index 28d79ee70f..b4a9d416a1 100644 --- a/cmd/swarmctl/common/resolver.go +++ b/cmd/swarmctl/common/resolver.go @@ -1,11 +1,11 @@ package common import ( + "context" "fmt" "github.com/docker/swarmkit/api" "github.com/spf13/cobra" - "golang.org/x/net/context" ) // Resolver provides ID to Name resolution. diff --git a/cmd/swarmctl/config/common.go b/cmd/swarmctl/config/common.go index 247c3e5969..bbdc1d5c29 100644 --- a/cmd/swarmctl/config/common.go +++ b/cmd/swarmctl/config/common.go @@ -1,10 +1,10 @@ package config import ( + "context" "fmt" "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) func getConfig(ctx context.Context, c api.ControlClient, input string) (*api.Config, error) { diff --git a/cmd/swarmctl/network/common.go b/cmd/swarmctl/network/common.go index f4d4dc76d2..ad2c68bd73 100644 --- a/cmd/swarmctl/network/common.go +++ b/cmd/swarmctl/network/common.go @@ -1,10 +1,10 @@ package network import ( + "context" "fmt" "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) // GetNetwork tries to query for a network as an ID and if it can't be diff --git a/cmd/swarmctl/node/common.go b/cmd/swarmctl/node/common.go index 2d0beb9ad3..c70384817a 100644 --- a/cmd/swarmctl/node/common.go +++ b/cmd/swarmctl/node/common.go @@ -1,13 +1,12 @@ package node import ( + "context" "errors" "fmt" "reflect" "strings" - "golang.org/x/net/context" - "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/cmd/swarmctl/common" "github.com/spf13/cobra" @@ -49,49 +48,7 @@ func changeNodeAvailability(cmd *cobra.Command, args []string, availability api. Spec: spec, }) - if err != nil { - return err - } - - return nil -} - -func changeNodeMembership(cmd *cobra.Command, args []string, membership api.NodeSpec_Membership) error { - if len(args) == 0 { - return errors.New("missing node ID") - } - - if len(args) > 1 { - return errors.New("command takes exactly 1 argument") - } - - c, err := common.Dial(cmd) - if err != nil { - return err - } - node, err := getNode(common.Context(cmd), c, args[0]) - if err != nil { - return err - } - spec := &node.Spec - - if spec.Membership == membership { - return errNoChange - } - - spec.Membership = membership - - _, err = c.UpdateNode(common.Context(cmd), &api.UpdateNodeRequest{ - NodeID: node.ID, - NodeVersion: &node.Meta.Version, - Spec: spec, - }) - - if err != nil { - return err - } - - return nil + return err } func changeNodeRole(cmd *cobra.Command, args []string, role api.NodeRole) error { @@ -125,11 +82,7 @@ func changeNodeRole(cmd *cobra.Command, args []string, role api.NodeRole) error Spec: spec, }) - if err != nil { - return err - } - - return nil + return err } func getNode(ctx context.Context, c api.ControlClient, input string) (*api.Node, error) { @@ -208,9 +161,5 @@ func updateNode(cmd *cobra.Command, args []string) error { Spec: spec, }) - if err != nil { - return err - } - - return nil + return err } diff --git a/cmd/swarmctl/secret/common.go b/cmd/swarmctl/secret/common.go index b6d5b0d4c3..5f7ca4e888 100644 --- a/cmd/swarmctl/secret/common.go +++ b/cmd/swarmctl/secret/common.go @@ -1,10 +1,10 @@ package secret import ( + "context" "fmt" "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) func getSecret(ctx context.Context, c api.ControlClient, input string) (*api.Secret, error) { diff --git a/cmd/swarmctl/service/common.go b/cmd/swarmctl/service/common.go index bab0a32d37..5d5db81fb0 100644 --- a/cmd/swarmctl/service/common.go +++ b/cmd/swarmctl/service/common.go @@ -1,10 +1,9 @@ package service import ( + "context" "fmt" - "golang.org/x/net/context" - "github.com/docker/swarmkit/api" ) diff --git a/cmd/swarmctl/service/logs.go b/cmd/swarmctl/service/logs.go index df7d0a5dcc..12ba7af664 100644 --- a/cmd/swarmctl/service/logs.go +++ b/cmd/swarmctl/service/logs.go @@ -1,6 +1,7 @@ package service import ( + "context" "fmt" "io" "os" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/cmd/swarmctl/common" "github.com/pkg/errors" "github.com/spf13/cobra" - "golang.org/x/net/context" ) var ( diff --git a/cmd/swarmd/main.go b/cmd/swarmd/main.go index 3297f1ae7a..88c4196e35 100644 --- a/cmd/swarmd/main.go +++ b/cmd/swarmd/main.go @@ -1,6 +1,7 @@ package main import ( + "context" _ "expvar" "fmt" "net" @@ -23,7 +24,6 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" "github.com/spf13/cobra" - "golang.org/x/net/context" ) var externalCAOpt cli.ExternalCAOpt diff --git a/direct.mk b/direct.mk index 52d80df633..68c5edfa49 100644 --- a/direct.mk +++ b/direct.mk @@ -1,9 +1,6 @@ .DEFAULT_GOAL = all .PHONY: all -all: check binaries test integration-tests ## run fmt, vet, lint, build the binaries and run the tests - -.PHONY: check -check: fmt vet lint ineffassign misspell +all: check binaries test integration-tests ## run check, build the binaries and run the tests .PHONY: ci ci: check binaries checkprotos coverage coverage-integration ## to be used by the CI @@ -20,10 +17,8 @@ version/version.go: setup: ## install dependencies @echo "🐳 $@" # TODO(stevvooe): Install these from the vendor directory - @go get -u github.com/golang/lint/golint - #@go get -u github.com/kisielk/errcheck - @go get -u github.com/gordonklaus/ineffassign - @go get -u github.com/client9/misspell/cmd/misspell + @go get -u github.com/alecthomas/gometalinter + @gometalinter --install @go get -u github.com/lk4d4/vndr @go get -u github.com/stevvooe/protobuild @@ -44,42 +39,19 @@ checkprotos: generate ## check if protobufs needs to be generated again ((git diff | cat) && \ (echo "👹 please run 'make generate' when making changes to proto files" && false)) -# Depends on binaries because vet will silently fail if it can't load compiled -# imports -.PHONY: vet -vet: binaries ## run go vet - @echo "🐳 $@" - @test -z "$$(go vet ${PACKAGES} 2>&1 | grep -v 'constant [0-9]* not a string in call to Errorf' | egrep -v '(timestamp_test.go|duration_test.go|exit status 1)' | tee /dev/stderr)" - -.PHONY: misspell -misspell: +.PHONY: check +check: fmt-proto +check: ## Run various source code validation tools @echo "🐳 $@" - @test -z "$$(find . -type f | grep -v vendor/ | grep -v bin/ | grep -v .git/ | grep -v MAINTAINERS | xargs misspell | tee /dev/stderr)" + @gometalinter ./... -.PHONY: fmt -fmt: ## run go fmt - @echo "🐳 $@" - @test -z "$$(gofmt -s -l . | grep -v vendor/ | grep -v ".pb.go$$" | tee /dev/stderr)" || \ - (echo "👹 please format Go code with 'gofmt -s -w'" && false) +.PHONY: fmt-proto +fmt-proto: @test -z "$$(find . -path ./vendor -prune -o ! -name timestamp.proto ! -name duration.proto -name '*.proto' -type f -exec grep -Hn -e "^ " {} \; | tee /dev/stderr)" || \ (echo "👹 please indent proto files with tabs only" && false) @test -z "$$(find . -path ./vendor -prune -o -name '*.proto' -type f -exec grep -Hn "Meta meta = " {} \; | grep -v '(gogoproto.nullable) = false' | tee /dev/stderr)" || \ (echo "👹 meta fields in proto files must have option (gogoproto.nullable) = false" && false) -.PHONY: lint -lint: ## run go lint - @echo "🐳 $@" - @test -z "$$(golint ./... | grep -v vendor/ | grep -v ".pb.go:" | tee /dev/stderr)" - -.PHONY: ineffassign -ineffassign: ## run ineffassign - @echo "🐳 $@" - @test -z "$$(ineffassign . | grep -v vendor/ | grep -v ".pb.go:" | tee /dev/stderr)" - -#errcheck: ## run go errcheck -# @echo "🐳 $@" -# @test -z "$$(errcheck ./... | grep -v vendor/ | grep -v ".pb.go:" | tee /dev/stderr)" - .PHONY: build build: ## build the go packages @echo "🐳 $@" diff --git a/integration/api.go b/integration/api.go index 0f44037887..b0042309dd 100644 --- a/integration/api.go +++ b/integration/api.go @@ -1,8 +1,9 @@ package integration import ( + "context" + "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) type dummyAPI struct { diff --git a/integration/cluster.go b/integration/cluster.go index e199d48f86..8dfe4a1dd7 100644 --- a/integration/cluster.go +++ b/integration/cluster.go @@ -1,6 +1,7 @@ package integration import ( + "context" "crypto/tls" "fmt" "math/rand" @@ -19,7 +20,6 @@ import ( "github.com/docker/swarmkit/node" "github.com/docker/swarmkit/testutils" "github.com/sirupsen/logrus" - "golang.org/x/net/context" ) const opsTimeout = 64 * time.Second @@ -39,23 +39,6 @@ type testCluster struct { var testnameKey struct{} -// NewCluster creates new cluster to which nodes can be added. -// AcceptancePolicy is set to most permissive mode on first manager node added. -func newTestCluster(testname string, fips bool) *testCluster { - ctx, cancel := context.WithCancel(context.Background()) - ctx = context.WithValue(ctx, testnameKey, testname) - c := &testCluster{ - ctx: ctx, - cancel: cancel, - nodes: make(map[string]*testNode), - nodesOrder: make(map[string]int), - errs: make(chan error, 1024), - fips: fips, - } - c.api = &dummyAPI{c: c} - return c -} - // Stop makes best effort to stop all nodes and close connections to them. func (c *testCluster) Stop() error { c.cancel() diff --git a/integration/integration_test.go b/integration/integration_test.go index 5fc6ef0efb..4c3011575c 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -2,6 +2,7 @@ package integration import ( "bytes" + "context" "flag" "fmt" "io/ioutil" @@ -14,8 +15,6 @@ import ( "github.com/docker/swarmkit/node" - "golang.org/x/net/context" - "reflect" "github.com/cloudflare/cfssl/helpers" @@ -63,6 +62,23 @@ func TestMain(m *testing.M) { os.Exit(res) } +// newTestCluster creates new cluster to which nodes can be added. +// AcceptancePolicy is set to most permissive mode on first manager node added. +func newTestCluster(testname string, fips bool) *testCluster { + ctx, cancel := context.WithCancel(context.Background()) + ctx = context.WithValue(ctx, testnameKey, testname) + c := &testCluster{ + ctx: ctx, + cancel: cancel, + nodes: make(map[string]*testNode), + nodesOrder: make(map[string]int), + errs: make(chan error, 1024), + fips: fips, + } + c.api = &dummyAPI{c: c} + return c +} + // pollClusterReady calls control api until all conditions are true: // * all nodes are ready // * all managers has membership == accepted diff --git a/integration/node.go b/integration/node.go index 6b2100bfdf..263c3b7eec 100644 --- a/integration/node.go +++ b/integration/node.go @@ -1,6 +1,7 @@ package integration import ( + "context" "fmt" "io/ioutil" "os" @@ -15,7 +16,6 @@ import ( "github.com/docker/swarmkit/ca" "github.com/docker/swarmkit/node" "github.com/docker/swarmkit/testutils" - "golang.org/x/net/context" ) // TestNode is representation of *agent.Node. It stores listeners, connections, diff --git a/ioutils/ioutils_test.go b/ioutils/ioutils_test.go index 40717a5108..56a69c4ec6 100644 --- a/ioutils/ioutils_test.go +++ b/ioutils/ioutils_test.go @@ -25,7 +25,7 @@ func TestAtomicWriteToFile(t *testing.T) { t.Fatalf("Error reading from file: %v", err) } - if bytes.Compare(actual, expected) != 0 { + if !bytes.Equal(actual, expected) { t.Fatalf("Data mismatch, expected %q, got %q", expected, actual) } } diff --git a/log/context.go b/log/context.go index ac4f848806..cc1d590f11 100644 --- a/log/context.go +++ b/log/context.go @@ -1,10 +1,10 @@ package log import ( + "context" "path" "github.com/sirupsen/logrus" - "golang.org/x/net/context" ) var ( diff --git a/log/context_test.go b/log/context_test.go index ddff398938..6c59874c0a 100644 --- a/log/context_test.go +++ b/log/context_test.go @@ -1,10 +1,10 @@ package log import ( + "context" "testing" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) func TestLoggerContext(t *testing.T) { diff --git a/log/grpc.go b/log/grpc.go index 0417c944c5..bced5cfa1b 100644 --- a/log/grpc.go +++ b/log/grpc.go @@ -1,8 +1,9 @@ package log import ( + "context" + "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc/grpclog" ) diff --git a/manager/allocator/allocator.go b/manager/allocator/allocator.go index e8b7e88c47..b4cc1c9e86 100644 --- a/manager/allocator/allocator.go +++ b/manager/allocator/allocator.go @@ -1,6 +1,7 @@ package allocator import ( + "context" "sync" "github.com/docker/docker/pkg/plugingetter" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/manager/allocator/cnmallocator" "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) // Allocator controls how the allocation stage in the manager is handled. diff --git a/manager/allocator/allocator_linux_test.go b/manager/allocator/allocator_linux_test.go index b64832eba1..7ea85ebe1a 100644 --- a/manager/allocator/allocator_linux_test.go +++ b/manager/allocator/allocator_linux_test.go @@ -1,10 +1,9 @@ package allocator import ( + "context" "testing" - "golang.org/x/net/context" - "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" diff --git a/manager/allocator/allocator_test.go b/manager/allocator/allocator_test.go index 93186d8554..ff5e7aa2ed 100644 --- a/manager/allocator/allocator_test.go +++ b/manager/allocator/allocator_test.go @@ -1,14 +1,13 @@ package allocator import ( + "context" "net" "runtime/debug" "strconv" "testing" "time" - "golang.org/x/net/context" - "github.com/docker/go-events" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/state" diff --git a/manager/allocator/cnmallocator/networkallocator.go b/manager/allocator/cnmallocator/networkallocator.go index 7a786406e1..c1ffc06a42 100644 --- a/manager/allocator/cnmallocator/networkallocator.go +++ b/manager/allocator/cnmallocator/networkallocator.go @@ -1,6 +1,7 @@ package cnmallocator import ( + "context" "fmt" "net" "strings" @@ -16,7 +17,6 @@ import ( "github.com/docker/swarmkit/manager/allocator/networkallocator" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" ) const ( @@ -815,8 +815,7 @@ func (na *cnmNetworkAllocator) resolveDriver(n *api.Network) (*networkDriver, er d, drvcap := na.drvRegistry.Driver(dName) if d == nil { - var err error - err = na.loadDriver(dName) + err := na.loadDriver(dName) if err != nil { return nil, err } diff --git a/manager/allocator/cnmallocator/portallocator.go b/manager/allocator/cnmallocator/portallocator.go index 113f900242..81447cbdb4 100644 --- a/manager/allocator/cnmallocator/portallocator.go +++ b/manager/allocator/cnmallocator/portallocator.go @@ -407,12 +407,12 @@ func (ps *portSpace) allocate(p *api.PortConfig) (err error) { } defer func() { if err != nil { - ps.dynamicPortSpace.Release(uint64(swarmPort)) + ps.dynamicPortSpace.Release(swarmPort) } }() // Make sure we allocate the same port from the master space. - if err = ps.masterPortSpace.GetSpecificID(uint64(swarmPort)); err != nil { + if err = ps.masterPortSpace.GetSpecificID(swarmPort); err != nil { return } diff --git a/manager/allocator/network.go b/manager/allocator/network.go index e4d5b61827..99d2226d03 100644 --- a/manager/allocator/network.go +++ b/manager/allocator/network.go @@ -1,6 +1,7 @@ package allocator import ( + "context" "fmt" "time" @@ -13,7 +14,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/protobuf/ptypes" "github.com/pkg/errors" - "golang.org/x/net/context" ) const ( diff --git a/manager/constraint/constraint.go b/manager/constraint/constraint.go index 9f13217ae4..6c49c07728 100644 --- a/manager/constraint/constraint.go +++ b/manager/constraint/constraint.go @@ -56,7 +56,7 @@ func Parse(env []string) ([]Constraint, error) { part0 := strings.TrimSpace(parts[0]) // validate key matched := alphaNumeric.MatchString(part0) - if matched == false { + if !matched { return nil, fmt.Errorf("key '%s' is invalid", part0) } @@ -64,7 +64,7 @@ func Parse(env []string) ([]Constraint, error) { // validate Value matched = valuePattern.MatchString(part1) - if matched == false { + if !matched { return nil, fmt.Errorf("value '%s' is invalid", part1) } // TODO(dongluochen): revisit requirements to see if globing or regex are useful diff --git a/manager/controlapi/cluster.go b/manager/controlapi/cluster.go index ad24804484..4865b81bad 100644 --- a/manager/controlapi/cluster.go +++ b/manager/controlapi/cluster.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "strings" "time" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/manager/encryption" "github.com/docker/swarmkit/manager/state/store" gogotypes "github.com/gogo/protobuf/types" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/controlapi/cluster_test.go b/manager/controlapi/cluster_test.go index 44ae9cfc2e..346b057fd1 100644 --- a/manager/controlapi/cluster_test.go +++ b/manager/controlapi/cluster_test.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "fmt" "testing" "time" @@ -14,7 +15,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" "google.golang.org/grpc/codes" ) diff --git a/manager/controlapi/config.go b/manager/controlapi/config.go index ae08885b00..bc8726fb86 100644 --- a/manager/controlapi/config.go +++ b/manager/controlapi/config.go @@ -2,6 +2,7 @@ package controlapi import ( "bytes" + "context" "strings" "github.com/docker/swarmkit/api" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/state/store" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/controlapi/config_test.go b/manager/controlapi/config_test.go index e794a3be0f..2d2de5f66c 100644 --- a/manager/controlapi/config_test.go +++ b/manager/controlapi/config_test.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "fmt" "strings" "testing" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/testutils" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" "google.golang.org/grpc/codes" ) diff --git a/manager/controlapi/network.go b/manager/controlapi/network.go index 481b0cfe4b..d3047fec72 100644 --- a/manager/controlapi/network.go +++ b/manager/controlapi/network.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "net" "github.com/docker/docker/pkg/plugingetter" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/manager/allocator" "github.com/docker/swarmkit/manager/allocator/networkallocator" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/controlapi/network_test.go b/manager/controlapi/network_test.go index 632ca59110..a8e6826134 100644 --- a/manager/controlapi/network_test.go +++ b/manager/controlapi/network_test.go @@ -1,10 +1,10 @@ package controlapi import ( + "context" "testing" "github.com/docker/swarmkit/testutils" - "golang.org/x/net/context" "google.golang.org/grpc/codes" diff --git a/manager/controlapi/node.go b/manager/controlapi/node.go index b2d15df07a..68a759fc02 100644 --- a/manager/controlapi/node.go +++ b/manager/controlapi/node.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "crypto/x509" "encoding/pem" @@ -8,7 +9,6 @@ import ( "github.com/docker/swarmkit/manager/state/raft/membership" "github.com/docker/swarmkit/manager/state/store" gogotypes "github.com/gogo/protobuf/types" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/controlapi/node_test.go b/manager/controlapi/node_test.go index 7c05bab801..00a5d9b7a3 100644 --- a/manager/controlapi/node_test.go +++ b/manager/controlapi/node_test.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "fmt" "io/ioutil" "testing" @@ -14,7 +15,6 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" ) diff --git a/manager/controlapi/secret.go b/manager/controlapi/secret.go index fdcd2c412c..f3d87d1a7c 100644 --- a/manager/controlapi/secret.go +++ b/manager/controlapi/secret.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "crypto/subtle" "strings" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/state/store" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/controlapi/secret_test.go b/manager/controlapi/secret_test.go index 25dab57856..b473318a81 100644 --- a/manager/controlapi/secret_test.go +++ b/manager/controlapi/secret_test.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "fmt" "strings" "testing" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/testutils" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" "google.golang.org/grpc/codes" ) diff --git a/manager/controlapi/server_test.go b/manager/controlapi/server_test.go index c788c796f4..3f07db8781 100644 --- a/manager/controlapi/server_test.go +++ b/manager/controlapi/server_test.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "io/ioutil" "net" "os" @@ -15,7 +16,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" stateutils "github.com/docker/swarmkit/manager/state/testutils" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) type testServer struct { diff --git a/manager/controlapi/service.go b/manager/controlapi/service.go index 3912052bf0..17bc2500e2 100644 --- a/manager/controlapi/service.go +++ b/manager/controlapi/service.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "errors" "reflect" "strings" @@ -18,7 +19,6 @@ import ( "github.com/docker/swarmkit/protobuf/ptypes" "github.com/docker/swarmkit/template" gogotypes "github.com/gogo/protobuf/types" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -197,7 +197,7 @@ func validateHealthCheck(hc *api.HealthConfig) error { if err != nil { return err } - if interval != 0 && interval < time.Duration(minimumDuration) { + if interval != 0 && interval < minimumDuration { return status.Errorf(codes.InvalidArgument, "ContainerSpec: Interval in HealthConfig cannot be less than %s", minimumDuration) } } @@ -207,7 +207,7 @@ func validateHealthCheck(hc *api.HealthConfig) error { if err != nil { return err } - if timeout != 0 && timeout < time.Duration(minimumDuration) { + if timeout != 0 && timeout < minimumDuration { return status.Errorf(codes.InvalidArgument, "ContainerSpec: Timeout in HealthConfig cannot be less than %s", minimumDuration) } } @@ -217,7 +217,7 @@ func validateHealthCheck(hc *api.HealthConfig) error { if err != nil { return err } - if sp != 0 && sp < time.Duration(minimumDuration) { + if sp != 0 && sp < minimumDuration { return status.Errorf(codes.InvalidArgument, "ContainerSpec: StartPeriod in HealthConfig cannot be less than %s", minimumDuration) } } diff --git a/manager/controlapi/service_test.go b/manager/controlapi/service_test.go index 1d8687d2e2..b560a4d659 100644 --- a/manager/controlapi/service_test.go +++ b/manager/controlapi/service_test.go @@ -1,6 +1,7 @@ package controlapi import ( + "context" "fmt" "strings" "testing" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/testutils" gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" "google.golang.org/grpc/codes" ) diff --git a/manager/controlapi/task.go b/manager/controlapi/task.go index dc56e74105..5f85f9a93c 100644 --- a/manager/controlapi/task.go +++ b/manager/controlapi/task.go @@ -1,11 +1,12 @@ package controlapi import ( + "context" + "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api/naming" "github.com/docker/swarmkit/manager/orchestrator" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/controlapi/task_test.go b/manager/controlapi/task_test.go index faafd547fd..17fe5e01cd 100644 --- a/manager/controlapi/task_test.go +++ b/manager/controlapi/task_test.go @@ -1,11 +1,11 @@ package controlapi import ( + "context" "strings" "testing" "github.com/docker/swarmkit/testutils" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "github.com/docker/swarmkit/api" diff --git a/manager/dirty_test.go b/manager/dirty_test.go index 259cedcb2f..3f6468f8b2 100644 --- a/manager/dirty_test.go +++ b/manager/dirty_test.go @@ -1,12 +1,11 @@ package manager import ( + "context" "io/ioutil" "os" "testing" - "golang.org/x/net/context" - "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/ca" "github.com/docker/swarmkit/ca/testutils" diff --git a/manager/dispatcher/dispatcher.go b/manager/dispatcher/dispatcher.go index 569ab26375..6149806470 100644 --- a/manager/dispatcher/dispatcher.go +++ b/manager/dispatcher/dispatcher.go @@ -1,6 +1,7 @@ package dispatcher import ( + "context" "fmt" "net" "strconv" @@ -21,7 +22,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -1090,14 +1090,10 @@ func (d *Dispatcher) moveTasksToOrphaned(nodeID string) error { task.Status.State = api.TaskStateOrphaned } - if err := batch.Update(func(tx store.Tx) error { - err := store.UpdateTask(tx, task) - if err != nil { - return err - } - - return nil - }); err != nil { + err := batch.Update(func(tx store.Tx) error { + return store.UpdateTask(tx, task) + }) + if err != nil { return err } diff --git a/manager/dispatcher/dispatcher_test.go b/manager/dispatcher/dispatcher_test.go index c4b1509b01..e62baa8052 100644 --- a/manager/dispatcher/dispatcher_test.go +++ b/manager/dispatcher/dispatcher_test.go @@ -1,6 +1,7 @@ package dispatcher import ( + "context" "crypto/tls" "encoding/json" "errors" @@ -13,8 +14,6 @@ import ( "testing" "time" - "golang.org/x/net/context" - "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -2088,7 +2087,6 @@ func (m *mockPluginGetter) GetAllManagedPluginsByCap(capability string) []plugin return nil } func (m *mockPluginGetter) Handle(capability string, callback func(string, *plugins.Client)) { - return } // MockPlugin mocks a v2 docker plugin diff --git a/manager/dispatcher/nodes.go b/manager/dispatcher/nodes.go index cf35bb869a..fae6dc5f82 100644 --- a/manager/dispatcher/nodes.go +++ b/manager/dispatcher/nodes.go @@ -156,7 +156,7 @@ func (s *nodeStore) Heartbeat(id, sid string) (time.Duration, error) { return 0, err } period := s.periodChooser.Choose() // base period for node - grace := period * time.Duration(s.gracePeriodMultiplierNormal) + grace := period * s.gracePeriodMultiplierNormal rn.mu.Lock() rn.Heartbeat.Update(grace) rn.Heartbeat.Beat() diff --git a/manager/health/health.go b/manager/health/health.go index ef6658b09d..d75cbf4b60 100644 --- a/manager/health/health.go +++ b/manager/health/health.go @@ -8,10 +8,10 @@ package health import ( + "context" "sync" "github.com/docker/swarmkit/api" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/keymanager/keymanager.go b/manager/keymanager/keymanager.go index e61979cb36..7a5d7bf14d 100644 --- a/manager/keymanager/keymanager.go +++ b/manager/keymanager/keymanager.go @@ -6,6 +6,7 @@ package keymanager // which is used to exchange service discovery and overlay network control // plane information. It can also be used to encrypt overlay data traffic. import ( + "context" cryptorand "crypto/rand" "encoding/binary" "sync" @@ -15,7 +16,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/state/store" "github.com/pkg/errors" - "golang.org/x/net/context" ) const ( diff --git a/manager/keymanager/keymanager_test.go b/manager/keymanager/keymanager_test.go index fc4e06f340..6b91cbf0bd 100644 --- a/manager/keymanager/keymanager_test.go +++ b/manager/keymanager/keymanager_test.go @@ -2,13 +2,13 @@ package keymanager import ( "bytes" + "context" "testing" "time" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/state/store" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) func createClusterSpec(name string) *api.ClusterSpec { diff --git a/manager/logbroker/broker.go b/manager/logbroker/broker.go index dfc898e070..c19438a27a 100644 --- a/manager/logbroker/broker.go +++ b/manager/logbroker/broker.go @@ -1,6 +1,7 @@ package logbroker import ( + "context" "errors" "fmt" "io" @@ -14,7 +15,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/watch" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/logbroker/broker_test.go b/manager/logbroker/broker_test.go index c133f0097c..ec85921016 100644 --- a/manager/logbroker/broker_test.go +++ b/manager/logbroker/broker_test.go @@ -1,6 +1,7 @@ package logbroker import ( + "context" "fmt" "io" "net" @@ -8,7 +9,6 @@ import ( "testing" "time" - "golang.org/x/net/context" "google.golang.org/grpc" "github.com/docker/swarmkit/api" diff --git a/manager/logbroker/subscription.go b/manager/logbroker/subscription.go index b9c9c7b403..883ddce655 100644 --- a/manager/logbroker/subscription.go +++ b/manager/logbroker/subscription.go @@ -1,6 +1,7 @@ package logbroker import ( + "context" "fmt" "strings" "sync" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/watch" - "golang.org/x/net/context" ) type subscription struct { diff --git a/manager/manager.go b/manager/manager.go index 106c8e2b58..08b158db44 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -1,6 +1,7 @@ package manager import ( + "context" "crypto/tls" "fmt" "net" @@ -45,7 +46,6 @@ import ( grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) @@ -1002,9 +1002,7 @@ func (m *Manager) becomeLeader(ctx context.Context) { cluster = store.GetCluster(tx, clusterID) }) if cluster.DefaultAddressPool != nil { - for _, address := range cluster.DefaultAddressPool { - m.config.NetworkConfig.DefaultAddrPool = append(m.config.NetworkConfig.DefaultAddrPool, address) - } + m.config.NetworkConfig.DefaultAddrPool = append(m.config.NetworkConfig.DefaultAddrPool, cluster.DefaultAddressPool...) m.config.NetworkConfig.SubnetSize = cluster.SubnetSize } } diff --git a/manager/manager_test.go b/manager/manager_test.go index cf306cabe0..dd921f4d7e 100644 --- a/manager/manager_test.go +++ b/manager/manager_test.go @@ -2,6 +2,7 @@ package manager import ( "bytes" + "context" "crypto/tls" "encoding/pem" "errors" @@ -12,8 +13,6 @@ import ( "testing" "time" - "golang.org/x/net/context" - "google.golang.org/grpc" "google.golang.org/grpc/credentials" diff --git a/manager/metrics/collector.go b/manager/metrics/collector.go index 384743707d..5539a898ca 100644 --- a/manager/metrics/collector.go +++ b/manager/metrics/collector.go @@ -188,7 +188,6 @@ func (c *Collector) handleNodeEvent(event events.Event) { if newNode != nil { nodesMetric.WithValues(strings.ToLower(newNode.Status.State.String())).Inc(1) } - return } func (c *Collector) handleTaskEvent(event events.Event) { @@ -218,8 +217,6 @@ func (c *Collector) handleTaskEvent(event events.Event) { strings.ToLower(newTask.Status.State.String()), ).Inc(1) } - - return } func (c *Collector) handleServiceEvent(event events.Event) { diff --git a/manager/orchestrator/global/global.go b/manager/orchestrator/global/global.go index 2b20813ce2..715781e817 100644 --- a/manager/orchestrator/global/global.go +++ b/manager/orchestrator/global/global.go @@ -1,6 +1,8 @@ package global import ( + "context" + "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/constraint" @@ -9,7 +11,6 @@ import ( "github.com/docker/swarmkit/manager/orchestrator/taskinit" "github.com/docker/swarmkit/manager/orchestrator/update" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) type globalService struct { @@ -585,11 +586,3 @@ func (g *Orchestrator) SlotTuple(t *api.Task) orchestrator.SlotTuple { NodeID: t.NodeID, } } - -func isTaskCompleted(t *api.Task, restartPolicy api.RestartPolicy_RestartCondition) bool { - if t == nil || t.DesiredState <= api.TaskStateRunning { - return false - } - return restartPolicy == api.RestartOnNone || - (restartPolicy == api.RestartOnFailure && t.Status.State == api.TaskStateCompleted) -} diff --git a/manager/orchestrator/global/global_test.go b/manager/orchestrator/global/global_test.go index 4a88f763c9..c7cede8d94 100644 --- a/manager/orchestrator/global/global_test.go +++ b/manager/orchestrator/global/global_test.go @@ -1,6 +1,7 @@ package global import ( + "context" "testing" "time" @@ -13,7 +14,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) var ( diff --git a/manager/orchestrator/replicated/drain_test.go b/manager/orchestrator/replicated/drain_test.go index 58a76c4a7f..690cc09aa8 100644 --- a/manager/orchestrator/replicated/drain_test.go +++ b/manager/orchestrator/replicated/drain_test.go @@ -1,6 +1,7 @@ package replicated import ( + "context" "testing" "github.com/docker/swarmkit/api" @@ -8,7 +9,6 @@ import ( "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" "github.com/stretchr/testify/assert" - "golang.org/x/net/context" ) func TestDrain(t *testing.T) { diff --git a/manager/orchestrator/replicated/replicated.go b/manager/orchestrator/replicated/replicated.go index 18b8e24aba..dc45528682 100644 --- a/manager/orchestrator/replicated/replicated.go +++ b/manager/orchestrator/replicated/replicated.go @@ -1,12 +1,13 @@ package replicated import ( + "context" + "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/orchestrator/restart" "github.com/docker/swarmkit/manager/orchestrator/update" "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) // An Orchestrator runs a reconciliation loop to create and destroy diff --git a/manager/orchestrator/replicated/replicated_test.go b/manager/orchestrator/replicated/replicated_test.go index 3b1e9133fe..6484b0ba50 100644 --- a/manager/orchestrator/replicated/replicated_test.go +++ b/manager/orchestrator/replicated/replicated_test.go @@ -1,6 +1,7 @@ package replicated import ( + "context" "testing" "time" @@ -12,7 +13,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestReplicatedOrchestrator(t *testing.T) { diff --git a/manager/orchestrator/replicated/restart_test.go b/manager/orchestrator/replicated/restart_test.go index b90268db94..2105b84a95 100644 --- a/manager/orchestrator/replicated/restart_test.go +++ b/manager/orchestrator/replicated/restart_test.go @@ -1,6 +1,7 @@ package replicated import ( + "context" "testing" "time" @@ -12,7 +13,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestOrchestratorRestartOnAny(t *testing.T) { diff --git a/manager/orchestrator/replicated/services.go b/manager/orchestrator/replicated/services.go index 04aea8795a..b5e6bb12e8 100644 --- a/manager/orchestrator/replicated/services.go +++ b/manager/orchestrator/replicated/services.go @@ -1,6 +1,7 @@ package replicated import ( + "context" "sort" "github.com/docker/go-events" @@ -8,7 +9,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/orchestrator" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) // This file provices service-level orchestration. It observes changes to diff --git a/manager/orchestrator/replicated/slot.go b/manager/orchestrator/replicated/slot.go index cee9fe10a0..1160d4c96c 100644 --- a/manager/orchestrator/replicated/slot.go +++ b/manager/orchestrator/replicated/slot.go @@ -1,10 +1,11 @@ package replicated import ( + "context" + "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/orchestrator" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) type slotsByRunningState []orchestrator.Slot diff --git a/manager/orchestrator/replicated/tasks.go b/manager/orchestrator/replicated/tasks.go index 66000e5d86..b6336aa88a 100644 --- a/manager/orchestrator/replicated/tasks.go +++ b/manager/orchestrator/replicated/tasks.go @@ -1,13 +1,14 @@ package replicated import ( + "context" + "github.com/docker/go-events" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/orchestrator" "github.com/docker/swarmkit/manager/orchestrator/taskinit" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) // This file provides task-level orchestration. It observes changes to task diff --git a/manager/orchestrator/replicated/update_test.go b/manager/orchestrator/replicated/update_test.go index 1599256fe8..45dacac6f6 100644 --- a/manager/orchestrator/replicated/update_test.go +++ b/manager/orchestrator/replicated/update_test.go @@ -1,6 +1,7 @@ package replicated import ( + "context" "sync/atomic" "testing" "time" @@ -12,7 +13,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestUpdaterRollback(t *testing.T) { @@ -51,38 +51,36 @@ func testUpdaterRollback(t *testing.T, rollbackFailureAction api.UpdateConfig_Fa go func() { failedLast := false for { - select { - case e := <-watchUpdate: - task := e.(api.EventUpdateTask).Task - if task.DesiredState == task.Status.State { - continue - } - if task.DesiredState == api.TaskStateRunning && task.Status.State != api.TaskStateFailed && task.Status.State != api.TaskStateRunning { - err := s.Update(func(tx store.Tx) error { - task = store.GetTask(tx, task.ID) - // Never fail two image2 tasks in a row, so there's a mix of - // failed and successful tasks for the rollback. - if task.Spec.GetContainer().Image == "image1" && atomic.LoadUint32(&failImage1) == 1 { - task.Status.State = api.TaskStateFailed - failedLast = true - } else if task.Spec.GetContainer().Image == "image2" && atomic.LoadUint32(&failImage2) == 1 && !failedLast { - task.Status.State = api.TaskStateFailed - failedLast = true - } else { - task.Status.State = task.DesiredState - failedLast = false - } - return store.UpdateTask(tx, task) - }) - assert.NoError(t, err) - } else if task.DesiredState > api.TaskStateRunning { - err := s.Update(func(tx store.Tx) error { - task = store.GetTask(tx, task.ID) + e := <-watchUpdate + task := e.(api.EventUpdateTask).Task + if task.DesiredState == task.Status.State { + continue + } + if task.DesiredState == api.TaskStateRunning && task.Status.State != api.TaskStateFailed && task.Status.State != api.TaskStateRunning { + err := s.Update(func(tx store.Tx) error { + task = store.GetTask(tx, task.ID) + // Never fail two image2 tasks in a row, so there's a mix of + // failed and successful tasks for the rollback. + if task.Spec.GetContainer().Image == "image1" && atomic.LoadUint32(&failImage1) == 1 { + task.Status.State = api.TaskStateFailed + failedLast = true + } else if task.Spec.GetContainer().Image == "image2" && atomic.LoadUint32(&failImage2) == 1 && !failedLast { + task.Status.State = api.TaskStateFailed + failedLast = true + } else { task.Status.State = task.DesiredState - return store.UpdateTask(tx, task) - }) - assert.NoError(t, err) - } + failedLast = false + } + return store.UpdateTask(tx, task) + }) + assert.NoError(t, err) + } else if task.DesiredState > api.TaskStateRunning { + err := s.Update(func(tx store.Tx) error { + task = store.GetTask(tx, task.ID) + task.Status.State = task.DesiredState + return store.UpdateTask(tx, task) + }) + assert.NoError(t, err) } } }() diff --git a/manager/orchestrator/restart/restart.go b/manager/orchestrator/restart/restart.go index 6af44b734c..c034183ba2 100644 --- a/manager/orchestrator/restart/restart.go +++ b/manager/orchestrator/restart/restart.go @@ -2,6 +2,7 @@ package restart import ( "container/list" + "context" "errors" "sync" "time" @@ -14,7 +15,6 @@ import ( "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" gogotypes "github.com/gogo/protobuf/types" - "golang.org/x/net/context" ) const defaultOldTaskTimeout = time.Minute diff --git a/manager/orchestrator/service.go b/manager/orchestrator/service.go index 7356c38cd5..037e493b30 100644 --- a/manager/orchestrator/service.go +++ b/manager/orchestrator/service.go @@ -1,10 +1,11 @@ package orchestrator import ( + "context" + "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) // IsReplicatedService checks if a service is a replicated service. diff --git a/manager/orchestrator/task_test.go b/manager/orchestrator/task_test.go index 6ac210b1c2..ec7f379f7a 100644 --- a/manager/orchestrator/task_test.go +++ b/manager/orchestrator/task_test.go @@ -1,12 +1,13 @@ package orchestrator import ( - google_protobuf "github.com/gogo/protobuf/types" - "github.com/stretchr/testify/assert" "sort" "strconv" "testing" + google_protobuf "github.com/gogo/protobuf/types" + "github.com/stretchr/testify/assert" + "github.com/docker/swarmkit/api" ) diff --git a/manager/orchestrator/taskinit/init.go b/manager/orchestrator/taskinit/init.go index b893428d51..be319cc25d 100644 --- a/manager/orchestrator/taskinit/init.go +++ b/manager/orchestrator/taskinit/init.go @@ -1,6 +1,7 @@ package taskinit import ( + "context" "sort" "time" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/manager/orchestrator/restart" "github.com/docker/swarmkit/manager/state/store" gogotypes "github.com/gogo/protobuf/types" - "golang.org/x/net/context" ) // InitHandler defines orchestrator's action to fix tasks at start. @@ -80,7 +80,7 @@ func CheckTasks(ctx context.Context, s *store.MemoryStore, readTx store.ReadTx, } if err == nil { restartTime := timestamp.Add(restartDelay) - calculatedRestartDelay := restartTime.Sub(time.Now()) + calculatedRestartDelay := time.Until(restartTime) if calculatedRestartDelay < restartDelay { restartDelay = calculatedRestartDelay } diff --git a/manager/orchestrator/taskreaper/task_reaper.go b/manager/orchestrator/taskreaper/task_reaper.go index cbeb321de9..5d2d2c7490 100644 --- a/manager/orchestrator/taskreaper/task_reaper.go +++ b/manager/orchestrator/taskreaper/task_reaper.go @@ -1,6 +1,7 @@ package taskreaper import ( + "context" "sort" "sync" "time" @@ -10,7 +11,6 @@ import ( "github.com/docker/swarmkit/manager/orchestrator" "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) const ( diff --git a/manager/orchestrator/update/updater.go b/manager/orchestrator/update/updater.go index 5a7d61231c..7c977dba1c 100644 --- a/manager/orchestrator/update/updater.go +++ b/manager/orchestrator/update/updater.go @@ -1,14 +1,13 @@ package update import ( + "context" "errors" "fmt" "reflect" "sync" "time" - "golang.org/x/net/context" - "github.com/docker/go-events" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api/defaults" diff --git a/manager/orchestrator/update/updater_test.go b/manager/orchestrator/update/updater_test.go index 1eca0f24eb..d54086d529 100644 --- a/manager/orchestrator/update/updater_test.go +++ b/manager/orchestrator/update/updater_test.go @@ -1,6 +1,7 @@ package update import ( + "context" "testing" "time" @@ -12,7 +13,6 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func getRunnableSlotSlice(t *testing.T, s *store.MemoryStore, service *api.Service) []orchestrator.Slot { diff --git a/manager/raftselector/raftselector.go b/manager/raftselector/raftselector.go index 89e7918a3d..47adcf0fd9 100644 --- a/manager/raftselector/raftselector.go +++ b/manager/raftselector/raftselector.go @@ -1,10 +1,9 @@ package raftselector import ( + "context" "errors" - "golang.org/x/net/context" - "google.golang.org/grpc" ) diff --git a/manager/resourceapi/allocator.go b/manager/resourceapi/allocator.go index ec19fba850..545e4ded99 100644 --- a/manager/resourceapi/allocator.go +++ b/manager/resourceapi/allocator.go @@ -1,6 +1,7 @@ package resourceapi import ( + "context" "errors" "time" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/identity" "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/protobuf/ptypes" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/manager/role_manager.go b/manager/role_manager.go index e5cf27b62f..a68bc3fc3b 100644 --- a/manager/role_manager.go +++ b/manager/role_manager.go @@ -1,6 +1,7 @@ package manager import ( + "context" "time" "github.com/docker/swarmkit/api" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/manager/state/raft/membership" "github.com/docker/swarmkit/manager/state/store" "github.com/pivotal-golang/clock" - "golang.org/x/net/context" ) const ( diff --git a/manager/scheduler/nodeinfo.go b/manager/scheduler/nodeinfo.go index 7f49058697..8f1ad331b5 100644 --- a/manager/scheduler/nodeinfo.go +++ b/manager/scheduler/nodeinfo.go @@ -1,12 +1,12 @@ package scheduler import ( + "context" "time" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api/genericresource" "github.com/docker/swarmkit/log" - "golang.org/x/net/context" ) // hostPortSpec specifies a used host port. diff --git a/manager/scheduler/scheduler.go b/manager/scheduler/scheduler.go index 9e708ed1b6..939fc6f96d 100644 --- a/manager/scheduler/scheduler.go +++ b/manager/scheduler/scheduler.go @@ -1,6 +1,7 @@ package scheduler import ( + "context" "time" "github.com/docker/swarmkit/api" @@ -9,7 +10,6 @@ import ( "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" "github.com/docker/swarmkit/protobuf/ptypes" - "golang.org/x/net/context" ) const ( diff --git a/manager/scheduler/scheduler_test.go b/manager/scheduler/scheduler_test.go index d387dc4a01..da59acd72d 100644 --- a/manager/scheduler/scheduler_test.go +++ b/manager/scheduler/scheduler_test.go @@ -1,6 +1,7 @@ package scheduler import ( + "context" "fmt" "runtime" "strconv" @@ -16,7 +17,6 @@ import ( "github.com/docker/swarmkit/manager/state/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestScheduler(t *testing.T) { diff --git a/manager/state/proposer.go b/manager/state/proposer.go index 4967f98a1e..8d53f5772f 100644 --- a/manager/state/proposer.go +++ b/manager/state/proposer.go @@ -1,8 +1,9 @@ package state import ( + "context" + "github.com/docker/swarmkit/api" - "golang.org/x/net/context" ) // A Change includes a version number and a set of store actions from a diff --git a/manager/state/raft/membership/cluster_test.go b/manager/state/raft/membership/cluster_test.go index 9a2c253368..0781fc8677 100644 --- a/manager/state/raft/membership/cluster_test.go +++ b/manager/state/raft/membership/cluster_test.go @@ -1,6 +1,7 @@ package membership_test import ( + "context" "errors" "fmt" "io/ioutil" @@ -8,8 +9,6 @@ import ( "testing" "time" - "golang.org/x/net/context" - "google.golang.org/grpc/grpclog" "github.com/coreos/etcd/raft/raftpb" @@ -279,7 +278,8 @@ func TestCanRemoveMember(t *testing.T) { // Removing nodes at this point fails because we lost quorum for i := 1; i <= 3; i++ { - ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() err := nodes[1].RemoveMember(ctx, uint64(i)) assert.Error(t, err) members := nodes[1].GetMemberlist() @@ -341,15 +341,17 @@ func TestCanRemoveMember(t *testing.T) { })) // Removing node 2 should fail (this would break the quorum) - ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) err := nodes[leader].RemoveMember(ctx, nodes[2].Config.ID) + cancel() assert.EqualError(t, err, raft.ErrCannotRemoveMember.Error()) members := nodes[leader].GetMemberlist() assert.Equal(t, len(members), 3) // Removing node 3 works fine because it is already unreachable - ctx, _ = context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel = context.WithTimeout(context.Background(), 10*time.Second) err = nodes[leader].RemoveMember(ctx, nodes[3].Config.ID) + cancel() assert.NoError(t, err) members = nodes[leader].GetMemberlist() assert.Nil(t, members[nodes[3].Config.ID]) @@ -380,16 +382,18 @@ func TestCanRemoveMember(t *testing.T) { })) // Removing node 3 should succeed - ctx, _ = context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel = context.WithTimeout(context.Background(), 10*time.Second) err = nodes[leader].RemoveMember(ctx, nodes[3].Config.ID) + cancel() assert.NoError(t, err) members = nodes[leader].GetMemberlist() assert.Nil(t, members[nodes[3].Config.ID]) assert.Equal(t, len(members), 2) // Removing node 2 should succeed - ctx, _ = context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel = context.WithTimeout(context.Background(), 10*time.Second) err = nodes[leader].RemoveMember(ctx, nodes[2].Config.ID) + cancel() assert.NoError(t, err) members = nodes[leader].GetMemberlist() assert.Nil(t, members[nodes[2].Config.ID]) diff --git a/manager/state/raft/raft.go b/manager/state/raft/raft.go index 38c61c7bd2..a1193b71ce 100644 --- a/manager/state/raft/raft.go +++ b/manager/state/raft/raft.go @@ -1,6 +1,7 @@ package raft import ( + "context" "fmt" "io" "math" @@ -30,7 +31,6 @@ import ( "github.com/pivotal-golang/clock" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "golang.org/x/net/context" "golang.org/x/time/rate" "google.golang.org/grpc" "google.golang.org/grpc/codes" @@ -1182,11 +1182,8 @@ func (n *Node) CanRemoveMember(id uint64) bool { } nquorum := (len(members)-1)/2 + 1 - if nreachable < nquorum { - return false - } - return true + return nreachable >= nquorum } func (n *Node) removeMember(ctx context.Context, id uint64) error { @@ -1591,10 +1588,7 @@ func (n *Node) ProposeValue(ctx context.Context, storeAction []api.StoreAction, defer cancel() _, err := n.processInternalRaftRequest(ctx, &api.InternalRaftRequest{Action: storeAction}, cb) - if err != nil { - return err - } - return nil + return err } // GetVersion returns the sequence information for the current raft round. diff --git a/manager/state/raft/raft_test.go b/manager/state/raft/raft_test.go index 952b3605bb..563ff0ebc9 100644 --- a/manager/state/raft/raft_test.go +++ b/manager/state/raft/raft_test.go @@ -1,6 +1,7 @@ package raft_test import ( + "context" "errors" "fmt" "io/ioutil" @@ -17,8 +18,6 @@ import ( "google.golang.org/grpc/grpclog" "google.golang.org/grpc/status" - "golang.org/x/net/context" - "github.com/coreos/etcd/raft/raftpb" "github.com/coreos/etcd/wal" "github.com/docker/swarmkit/api" @@ -110,8 +109,9 @@ func TestRaftJoinTwice(t *testing.T) { assert.NoError(t, err) raftClient := api.NewRaftMembershipClient(cc) defer cc.Close() - ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) _, err = raftClient.Join(ctx, &api.JoinRequest{Addr: l.Addr().String()}) + cancel() assert.NoError(t, err) // Propose a value and wait for it to propagate @@ -367,8 +367,9 @@ func TestRaftFollowerLeave(t *testing.T) { assert.NoError(t, err) raftClient := api.NewRaftMembershipClient(cc) defer cc.Close() - ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) resp, err := raftClient.Leave(ctx, &api.LeaveRequest{Node: &api.RaftMember{RaftID: nodes[5].Config.ID}}) + cancel() assert.NoError(t, err, "error sending message to leave the raft") assert.NotNil(t, resp, "leave response message is nil") @@ -412,8 +413,8 @@ func TestRaftLeaderLeave(t *testing.T) { raftClient := api.NewRaftMembershipClient(cc) defer cc.Close() ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() resp, err := raftClient.Leave(ctx, &api.LeaveRequest{Node: &api.RaftMember{RaftID: nodes[1].Config.ID}}) + cancel() assert.NoError(t, err, "error sending message to leave the raft") assert.NotNil(t, resp, "leave response message is nil") diff --git a/manager/state/raft/storage.go b/manager/state/raft/storage.go index 547b775645..915cc3f241 100644 --- a/manager/state/raft/storage.go +++ b/manager/state/raft/storage.go @@ -1,6 +1,7 @@ package raft import ( + "context" "fmt" "github.com/coreos/etcd/raft" @@ -13,7 +14,6 @@ import ( "github.com/docker/swarmkit/manager/state/raft/storage" "github.com/docker/swarmkit/manager/state/store" "github.com/pkg/errors" - "golang.org/x/net/context" ) var ( diff --git a/manager/state/raft/storage/storage.go b/manager/state/raft/storage/storage.go index bbd262f37c..64d821894e 100644 --- a/manager/state/raft/storage/storage.go +++ b/manager/state/raft/storage/storage.go @@ -1,13 +1,12 @@ package storage import ( + "context" "fmt" "os" "path/filepath" "sync" - "golang.org/x/net/context" - "github.com/coreos/etcd/pkg/fileutil" "github.com/coreos/etcd/raft/raftpb" "github.com/coreos/etcd/snap" diff --git a/manager/state/raft/storage/storage_test.go b/manager/state/raft/storage/storage_test.go index f192eb48c2..2811f6e7d4 100644 --- a/manager/state/raft/storage/storage_test.go +++ b/manager/state/raft/storage/storage_test.go @@ -1,6 +1,7 @@ package storage import ( + "context" "io/ioutil" "os" "path/filepath" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/manager/encryption" "github.com/pkg/errors" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestBootstrapFromDisk(t *testing.T) { diff --git a/manager/state/raft/storage/walwrap.go b/manager/state/raft/storage/walwrap.go index 3c1208cdd0..d1155975bf 100644 --- a/manager/state/raft/storage/walwrap.go +++ b/manager/state/raft/storage/walwrap.go @@ -1,6 +1,7 @@ package storage import ( + "context" "io" "io/ioutil" "os" @@ -14,7 +15,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/encryption" "github.com/pkg/errors" - "golang.org/x/net/context" ) // This package wraps the github.com/coreos/etcd/wal package, and encrypts diff --git a/manager/state/raft/storage/walwrap_test.go b/manager/state/raft/storage/walwrap_test.go index 18fa5b77ea..ffe4d39107 100644 --- a/manager/state/raft/storage/walwrap_test.go +++ b/manager/state/raft/storage/walwrap_test.go @@ -2,6 +2,7 @@ package storage import ( "bytes" + "context" "fmt" "io/ioutil" "os" @@ -13,7 +14,6 @@ import ( "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/encryption" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) var _ WALFactory = walCryptor{} diff --git a/manager/state/raft/storage_test.go b/manager/state/raft/storage_test.go index 2fcbcd18c1..9b49c6bd59 100644 --- a/manager/state/raft/storage_test.go +++ b/manager/state/raft/storage_test.go @@ -1,6 +1,7 @@ package raft_test import ( + "context" "fmt" "io/ioutil" "os" @@ -18,7 +19,6 @@ import ( "github.com/pivotal-golang/clock/fakeclock" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestRaftSnapshot(t *testing.T) { @@ -276,8 +276,9 @@ func TestRaftSnapshotForceNewCluster(t *testing.T) { assert.NoError(t, err) raftClient := api.NewRaftMembershipClient(cc) defer cc.Close() - ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) resp, err := raftClient.Leave(ctx, &api.LeaveRequest{Node: &api.RaftMember{RaftID: nodes[2].Config.ID}}) + cancel() assert.NoError(t, err, "error sending message to leave the raft") assert.NotNil(t, resp, "leave response message is nil") @@ -502,12 +503,13 @@ func proposeLargeValue(t *testing.T, raftNode *raftutils.TestNode, time time.Dur }, } - ctx, _ := context.WithTimeout(context.Background(), time) + ctx, cancel := context.WithTimeout(context.Background(), time) err := raftNode.ProposeValue(ctx, storeActions, func() { err := raftNode.MemoryStore().ApplyStoreActions(storeActions) assert.NoError(t, err, "error applying actions") }) + cancel() if err != nil { return nil, err } diff --git a/manager/state/raft/testutils/testutils.go b/manager/state/raft/testutils/testutils.go index b6874119a0..91dc6c4c69 100644 --- a/manager/state/raft/testutils/testutils.go +++ b/manager/state/raft/testutils/testutils.go @@ -1,6 +1,7 @@ package testutils import ( + "context" "io/ioutil" "net" "os" @@ -9,8 +10,6 @@ import ( "testing" "time" - "golang.org/x/net/context" - "google.golang.org/grpc" etcdraft "github.com/coreos/etcd/raft" @@ -520,12 +519,13 @@ func ProposeValue(t *testing.T, raftNode *TestNode, time time.Duration, nodeID . }, } - ctx, _ := context.WithTimeout(context.Background(), time) + ctx, cancel := context.WithTimeout(context.Background(), time) err := raftNode.ProposeValue(ctx, storeActions, func() { err := raftNode.MemoryStore().ApplyStoreActions(storeActions) assert.NoError(t, err, "error applying actions") }) + cancel() if err != nil { return nil, err } diff --git a/manager/state/raft/transport/mock_raft_test.go b/manager/state/raft/transport/mock_raft_test.go index bf4cc10ef2..9b6b2c6e8c 100644 --- a/manager/state/raft/transport/mock_raft_test.go +++ b/manager/state/raft/transport/mock_raft_test.go @@ -1,6 +1,7 @@ package transport import ( + "context" "io" "net" "time" @@ -11,7 +12,6 @@ import ( "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/health" "github.com/docker/swarmkit/manager/state/raft/membership" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" diff --git a/manager/state/raft/transport/peer.go b/manager/state/raft/transport/peer.go index 644e295214..6fb39523ca 100644 --- a/manager/state/raft/transport/peer.go +++ b/manager/state/raft/transport/peer.go @@ -1,12 +1,11 @@ package transport import ( + "context" "fmt" "sync" "time" - "golang.org/x/net/context" - "google.golang.org/grpc" "google.golang.org/grpc/codes" diff --git a/manager/state/raft/transport/peer_test.go b/manager/state/raft/transport/peer_test.go index 1b04e1b72a..21089eba98 100644 --- a/manager/state/raft/transport/peer_test.go +++ b/manager/state/raft/transport/peer_test.go @@ -1,11 +1,10 @@ package transport import ( + "context" "math" "testing" - "golang.org/x/net/context" - "github.com/coreos/etcd/raft/raftpb" "github.com/stretchr/testify/assert" ) diff --git a/manager/state/raft/transport/transport.go b/manager/state/raft/transport/transport.go index b741c4aa67..72cf073ba5 100644 --- a/manager/state/raft/transport/transport.go +++ b/manager/state/raft/transport/transport.go @@ -3,12 +3,11 @@ package transport import ( + "context" "net" "sync" "time" - "golang.org/x/net/context" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" "google.golang.org/grpc/credentials" diff --git a/manager/state/raft/transport/transport_test.go b/manager/state/raft/transport/transport_test.go index c203e7447b..b631958ea5 100644 --- a/manager/state/raft/transport/transport_test.go +++ b/manager/state/raft/transport/transport_test.go @@ -1,11 +1,10 @@ package transport import ( + "context" "testing" "time" - "golang.org/x/net/context" - "github.com/coreos/etcd/raft" "github.com/coreos/etcd/raft/raftpb" "github.com/stretchr/testify/assert" diff --git a/manager/state/raft/util.go b/manager/state/raft/util.go index da44dca6a5..75872fe77c 100644 --- a/manager/state/raft/util.go +++ b/manager/state/raft/util.go @@ -1,10 +1,9 @@ package raft import ( + "context" "time" - "golang.org/x/net/context" - "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/state" "github.com/docker/swarmkit/manager/state/store" diff --git a/manager/state/store/memory.go b/manager/state/store/memory.go index 423f04cad3..d0319c7f65 100644 --- a/manager/state/store/memory.go +++ b/manager/state/store/memory.go @@ -1,6 +1,7 @@ package store import ( + "context" "errors" "fmt" "runtime" @@ -18,7 +19,6 @@ import ( "github.com/docker/swarmkit/watch" gogotypes "github.com/gogo/protobuf/types" memdb "github.com/hashicorp/go-memdb" - "golang.org/x/net/context" ) const ( @@ -689,7 +689,7 @@ func (tx readTx) findIterators(table string, by By, checkType func(By) error) ([ } return []memdb.ResultIterator{it}, nil case bySlot: - it, err := tx.memDBTx.Get(table, indexSlot, v.serviceID+"\x00"+strconv.FormatUint(uint64(v.slot), 10)) + it, err := tx.memDBTx.Get(table, indexSlot, v.serviceID+"\x00"+strconv.FormatUint(v.slot, 10)) if err != nil { return nil, err } diff --git a/manager/state/testutils/mock_proposer.go b/manager/state/testutils/mock_proposer.go index caf8ebaf55..38b0662b3e 100644 --- a/manager/state/testutils/mock_proposer.go +++ b/manager/state/testutils/mock_proposer.go @@ -1,11 +1,11 @@ package testutils import ( + "context" "errors" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/state" - "golang.org/x/net/context" ) // MockProposer is a simple proposer implementation for use in tests. diff --git a/manager/watchapi/server.go b/manager/watchapi/server.go index 6d49dca715..eb086b8ac0 100644 --- a/manager/watchapi/server.go +++ b/manager/watchapi/server.go @@ -1,11 +1,11 @@ package watchapi import ( + "context" "errors" "sync" "github.com/docker/swarmkit/manager/state/store" - "golang.org/x/net/context" ) var ( diff --git a/manager/watchapi/server_test.go b/manager/watchapi/server_test.go index 0df252993f..ceb2ce1576 100644 --- a/manager/watchapi/server_test.go +++ b/manager/watchapi/server_test.go @@ -1,6 +1,7 @@ package watchapi import ( + "context" "io/ioutil" "net" "os" @@ -14,7 +15,6 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/grpclog" ) diff --git a/manager/watchapi/watch_test.go b/manager/watchapi/watch_test.go index 3d908c1766..41aa7a0e97 100644 --- a/manager/watchapi/watch_test.go +++ b/manager/watchapi/watch_test.go @@ -1,13 +1,13 @@ package watchapi import ( + "context" "testing" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/manager/state/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func TestWatch(t *testing.T) { diff --git a/node/node.go b/node/node.go index 6cbf265c5d..92bd74884e 100644 --- a/node/node.go +++ b/node/node.go @@ -2,6 +2,7 @@ package node import ( "bytes" + "context" "crypto/tls" "encoding/json" "io/ioutil" @@ -35,7 +36,6 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" bolt "go.etcd.io/bbolt" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/status" @@ -1204,19 +1204,16 @@ func (s *persistentRemotes) Observe(peer api.Peer, weight int) { s.c.Broadcast() if err := s.save(); err != nil { logrus.Errorf("error writing cluster state file: %v", err) - return } - return } + func (s *persistentRemotes) Remove(peers ...api.Peer) { s.Lock() defer s.Unlock() s.Remotes.Remove(peers...) if err := s.save(); err != nil { logrus.Errorf("error writing cluster state file: %v", err) - return } - return } func (s *persistentRemotes) save() error { diff --git a/node/node_test.go b/node/node_test.go index ebd44b03e8..6f6bd25c67 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -2,6 +2,7 @@ package node import ( "bytes" + "context" "crypto/x509" "encoding/pem" "fmt" @@ -25,7 +26,6 @@ import ( "github.com/docker/swarmkit/testutils" "github.com/pkg/errors" "github.com/stretchr/testify/require" - "golang.org/x/net/context" ) func getLoggingContext(t *testing.T) context.Context { diff --git a/protobuf/plugin/raftproxy/test/raftproxy_test.go b/protobuf/plugin/raftproxy/test/raftproxy_test.go index bdefb65311..e0dfc9c22a 100644 --- a/protobuf/plugin/raftproxy/test/raftproxy_test.go +++ b/protobuf/plugin/raftproxy/test/raftproxy_test.go @@ -1,6 +1,7 @@ package test import ( + "context" "net" "testing" "time" @@ -9,8 +10,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/net/context" - "google.golang.org/grpc" "google.golang.org/grpc/codes" ) diff --git a/watch/sinks_test.go b/watch/sinks_test.go index 867b2f7c42..69593885eb 100644 --- a/watch/sinks_test.go +++ b/watch/sinks_test.go @@ -39,8 +39,7 @@ func TestTimeoutDropErrSinkGen(t *testing.T) { <-ch2.Done() // Make sure that closing a sink closes the channel - var errClose error - errClose = sink.Close() + errClose := sink.Close() <-ch.Done() require.NoError(errClose)