diff --git a/agent/input/telegram/conn.go b/agent/input/telegram/conn.go index 1012dece..78a8ff3a 100644 --- a/agent/input/telegram/conn.go +++ b/agent/input/telegram/conn.go @@ -8,7 +8,7 @@ import ( "github.com/forestgiant/sliceutil" "github.com/micro/go-micro/agent/input" "github.com/micro/go-micro/util/log" - "gopkg.in/telegram-bot-api.v4" + tgbotapi "gopkg.in/telegram-bot-api.v4" ) type telegramConn struct { diff --git a/agent/input/telegram/telegram.go b/agent/input/telegram/telegram.go index 87566e4e..a1510527 100644 --- a/agent/input/telegram/telegram.go +++ b/agent/input/telegram/telegram.go @@ -7,7 +7,7 @@ import ( "github.com/micro/cli" "github.com/micro/go-micro/agent/input" - "gopkg.in/telegram-bot-api.v4" + tgbotapi "gopkg.in/telegram-bot-api.v4" ) type telegramInput struct { diff --git a/api/handler/cloudevents/event.go b/api/handler/cloudevents/event.go index 6c0c6cf9..4869188b 100644 --- a/api/handler/cloudevents/event.go +++ b/api/handler/cloudevents/event.go @@ -32,7 +32,7 @@ import ( "unicode" "github.com/google/uuid" - "gopkg.in/go-playground/validator.v9" + validator "gopkg.in/go-playground/validator.v9" ) const ( diff --git a/api/handler/rpc/rpc_test.go b/api/handler/rpc/rpc_test.go index 2804a84c..f50cdedf 100644 --- a/api/handler/rpc/rpc_test.go +++ b/api/handler/rpc/rpc_test.go @@ -7,7 +7,7 @@ import ( "testing" "github.com/golang/protobuf/proto" - "github.com/micro/go-micro/api/proto" + go_api "github.com/micro/go-micro/api/proto" ) func TestRequestPayloadFromRequest(t *testing.T) { diff --git a/api/server/acme/certmagic/storage.go b/api/server/acme/certmagic/storage.go index 6b8e04fb..24d187f5 100644 --- a/api/server/acme/certmagic/storage.go +++ b/api/server/acme/certmagic/storage.go @@ -81,8 +81,7 @@ func (s *storage) Delete(key string) error { } func (s *storage) Exists(key string) bool { - _, err := s.store.Read(key) - if err != nil { + if _, err := s.store.Read(key); err != nil { return false } return true @@ -93,6 +92,8 @@ func (s *storage) List(prefix string, recursive bool) ([]string, error) { if err != nil { return nil, err } + + //nolint:prealloc var results []string for _, r := range records { if strings.HasPrefix(r.Key, prefix) { diff --git a/broker/http_broker.go b/broker/http_broker.go index b6c78b62..53dd48f1 100644 --- a/broker/http_broker.go +++ b/broker/http_broker.go @@ -237,6 +237,7 @@ func (h *httpBroker) unsubscribe(s *httpSubscriber) error { h.Lock() defer h.Unlock() + //nolint:prealloc var subscribers []*httpSubscriber // look for subscriber @@ -325,6 +326,7 @@ func (h *httpBroker) ServeHTTP(w http.ResponseWriter, req *http.Request) { p := &httpEvent{m: m, t: topic} id := req.Form.Get("id") + //nolint:prealloc var subs []Handler h.RLock() diff --git a/broker/nats/nats.go b/broker/nats/nats.go index eecb16ec..a72f7682 100644 --- a/broker/nats/nats.go +++ b/broker/nats/nats.go @@ -70,6 +70,7 @@ func (n *natsBroker) Address() string { } func setAddrs(addrs []string) []string { + //nolint:prealloc var cAddrs []string for _, addr := range addrs { if len(addr) == 0 { diff --git a/broker/nats/nats_test.go b/broker/nats/nats_test.go index 36625da2..e58362e5 100644 --- a/broker/nats/nats_test.go +++ b/broker/nats/nats_test.go @@ -94,6 +94,5 @@ func TestInitAddrs(t *testing.T) { } } }) - } } diff --git a/client/grpc/codec.go b/client/grpc/codec.go index c792abbd..2f32a0b1 100644 --- a/client/grpc/codec.go +++ b/client/grpc/codec.go @@ -11,8 +11,6 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/micro/go-micro/codec" "github.com/micro/go-micro/codec/bytes" - "github.com/micro/go-micro/codec/jsonrpc" - "github.com/micro/go-micro/codec/protorpc" "google.golang.org/grpc" "google.golang.org/grpc/encoding" ) @@ -36,14 +34,6 @@ var ( "application/grpc+bytes": bytesCodec{}, } - defaultRPCCodecs = map[string]codec.NewCodec{ - "application/json": jsonrpc.NewCodec, - "application/json-rpc": jsonrpc.NewCodec, - "application/protobuf": protorpc.NewCodec, - "application/proto-rpc": protorpc.NewCodec, - "application/octet-stream": protorpc.NewCodec, - } - json = jsoniter.ConfigCompatibleWithStandardLibrary ) diff --git a/client/grpc/grpc.go b/client/grpc/grpc.go index 62b8d5db..a593b690 100644 --- a/client/grpc/grpc.go +++ b/client/grpc/grpc.go @@ -282,16 +282,6 @@ func (g *grpcClient) newGRPCCodec(contentType string) (encoding.Codec, error) { return nil, fmt.Errorf("Unsupported Content-Type: %s", contentType) } -func (g *grpcClient) newCodec(contentType string) (codec.NewCodec, error) { - if c, ok := g.opts.Codecs[contentType]; ok { - return c, nil - } - if cf, ok := defaultRPCCodecs[contentType]; ok { - return cf, nil - } - return nil, fmt.Errorf("Unsupported Content-Type: %s", contentType) -} - func (g *grpcClient) Init(opts ...client.Option) error { size := g.opts.PoolSize ttl := g.opts.PoolTTL diff --git a/client/grpc/grpc_pool_test.go b/client/grpc/grpc_pool_test.go index 955e18c5..d5c1fdb0 100644 --- a/client/grpc/grpc_pool_test.go +++ b/client/grpc/grpc_pool_test.go @@ -1,11 +1,11 @@ package grpc import ( + "context" "net" "testing" "time" - "context" "google.golang.org/grpc" pgrpc "google.golang.org/grpc" pb "google.golang.org/grpc/examples/helloworld/helloworld" diff --git a/client/selector/dns/dns.go b/client/selector/dns/dns.go index 4248fe3d..450ae412 100644 --- a/client/selector/dns/dns.go +++ b/client/selector/dns/dns.go @@ -63,7 +63,7 @@ func (d *dnsSelector) Select(service string, opts ...selector.SelectOption) (sel } } - var nodes []*registry.Node + nodes := make([]*registry.Node, 0, len(srv)) for _, node := range srv { nodes = append(nodes, ®istry.Node{ Id: node.Target, @@ -99,13 +99,9 @@ func (d *dnsSelector) Select(service string, opts ...selector.SelectOption) (sel return sopts.Strategy(services), nil } -func (d *dnsSelector) Mark(service string, node *registry.Node, err error) { - return -} +func (d *dnsSelector) Mark(service string, node *registry.Node, err error) {} -func (d *dnsSelector) Reset(service string) { - return -} +func (d *dnsSelector) Reset(service string) {} func (d *dnsSelector) Close() error { return nil diff --git a/client/selector/router/router.go b/client/selector/router/router.go index 4a6ad671..ed7c10e6 100644 --- a/client/selector/router/router.go +++ b/client/selector/router/router.go @@ -176,12 +176,10 @@ func (r *routerSelector) Select(service string, opts ...selector.SelectOption) ( func (r *routerSelector) Mark(service string, node *registry.Node, err error) { // TODO: pass back metrics or information to the router - return } func (r *routerSelector) Reset(service string) { // TODO: reset the metrics or information at the router - return } func (r *routerSelector) Close() error { diff --git a/client/selector/selector.go b/client/selector/selector.go index 5c9a2499..83d82974 100644 --- a/client/selector/selector.go +++ b/client/selector/selector.go @@ -3,6 +3,7 @@ package selector import ( "errors" + "github.com/micro/go-micro/registry" ) diff --git a/client/selector/strategy.go b/client/selector/strategy.go index 559ed030..5014d25d 100644 --- a/client/selector/strategy.go +++ b/client/selector/strategy.go @@ -32,7 +32,7 @@ func Random(services []*registry.Service) Next { // RoundRobin is a roundrobin strategy algorithm for node selection func RoundRobin(services []*registry.Service) Next { - var nodes []*registry.Node + nodes := make([]*registry.Node, 0, len(services)) for _, service := range services { nodes = append(nodes, service.Nodes...) diff --git a/config/loader/memory/memory.go b/config/loader/memory/memory.go index 62f1e0ae..21141c5b 100644 --- a/config/loader/memory/memory.go +++ b/config/loader/memory/memory.go @@ -193,6 +193,7 @@ func (m *memory) Snapshot() (*loader.Snapshot, error) { // Sync loads all the sources, calls the parser and updates the config func (m *memory) Sync() error { + //nolint:prealloc var sets []*source.ChangeSet m.Lock() diff --git a/config/options/options.go b/config/options/options.go index 588f4838..b465ba63 100644 --- a/config/options/options.go +++ b/config/options/options.go @@ -2,6 +2,7 @@ package options import ( + "log" "sync" ) @@ -68,6 +69,8 @@ func WithString(s string) Option { // NewOptions returns a new initialiser func NewOptions(opts ...Option) Options { o := new(defaultOptions) - o.Init(opts...) + if err := o.Init(opts...); err != nil { + log.Fatal(err) + } return o } diff --git a/config/source/env/options.go b/config/source/env/options.go index 112a7db2..495672b5 100644 --- a/config/source/env/options.go +++ b/config/source/env/options.go @@ -35,6 +35,7 @@ func WithPrefix(p ...string) source.Option { } func appendUnderscore(prefixes []string) []string { + //nolint:prealloc var result []string for _, p := range prefixes { if !strings.HasSuffix(p, "_") { diff --git a/network/default.go b/network/default.go index 4ddcc2e4..2cee7aec 100644 --- a/network/default.go +++ b/network/default.go @@ -195,6 +195,7 @@ func (n *network) resolveNodes() ([]string, error) { nodeMap := make(map[string]bool) // collect network node addresses + //nolint:prealloc var nodes []string var i int diff --git a/network/resolver/dns/dns.go b/network/resolver/dns/dns.go index aaa3a744..b4029f06 100644 --- a/network/resolver/dns/dns.go +++ b/network/resolver/dns/dns.go @@ -38,6 +38,7 @@ func (r *Resolver) Resolve(name string) ([]*resolver.Record, error) { return nil, err } + //nolint:prealloc var records []*resolver.Record for _, answer := range rec.Answer { diff --git a/network/resolver/dnssrv/dnssrv.go b/network/resolver/dnssrv/dnssrv.go index 75a11795..9bfe9638 100644 --- a/network/resolver/dnssrv/dnssrv.go +++ b/network/resolver/dnssrv/dnssrv.go @@ -17,7 +17,7 @@ func (r *Resolver) Resolve(name string) ([]*resolver.Record, error) { if err != nil { return nil, err } - var records []*resolver.Record + records := make([]*resolver.Record, len(addrs)) for _, addr := range addrs { address := addr.Target if addr.Port > 0 { diff --git a/network/service/handler/handler.go b/network/service/handler/handler.go index 62e8910c..5a9f9379 100644 --- a/network/service/handler/handler.go +++ b/network/service/handler/handler.go @@ -29,10 +29,11 @@ func flatten(n network.Node, visited map[string]bool) []network.Node { } // create new list of nodes + //nolint:prealloc var nodes []network.Node // check if already visited - if visited[n.Id()] == false { + if !visited[n.Id()] { // append the current node nodes = append(nodes, n) } diff --git a/proxy/mucp/mucp.go b/proxy/mucp/mucp.go index 856657a1..a202fe3d 100644 --- a/proxy/mucp/mucp.go +++ b/proxy/mucp/mucp.go @@ -83,7 +83,7 @@ func readLoop(r server.Request, s client.Stream) error { // toNodes returns a list of node addresses from given routes func toNodes(routes []router.Route) []string { - var nodes []string + nodes := make([]string, len(routes)) for _, node := range routes { address := node.Address if len(node.Gateway) > 0 { @@ -112,6 +112,7 @@ func (p *Proxy) filterRoutes(ctx context.Context, routes []router.Route) []route return routes } + //nolint:prealloc var filteredRoutes []router.Route // filter the routes based on our headers @@ -361,6 +362,7 @@ func (p *Proxy) ServeRequest(ctx context.Context, req server.Request, rsp server routes = addr } + //nolint:prealloc var opts []client.CallOption // set strategy to round robin diff --git a/registry/etcd/etcd.go b/registry/etcd/etcd.go index 182ddbf8..a48932fc 100644 --- a/registry/etcd/etcd.go +++ b/registry/etcd/etcd.go @@ -335,9 +335,7 @@ func (e *etcdRegistry) GetService(name string) ([]*registry.Service, error) { serviceMap[s.Version] = s } - for _, node := range sn.Nodes { - s.Nodes = append(s.Nodes, node) - } + s.Nodes = append(s.Nodes, sn.Nodes...) } } diff --git a/registry/memory/memory_watcher.go b/registry/memory/memory_watcher.go index 3ec2071b..8eb3cfd1 100644 --- a/registry/memory/memory_watcher.go +++ b/registry/memory/memory_watcher.go @@ -13,10 +13,8 @@ type memoryWatcher struct { func (m *memoryWatcher) Next() (*registry.Result, error) { // not implement so we just block until exit - select { - case <-m.exit: - return nil, errors.New("watcher stopped") - } + <-m.exit + return nil, errors.New("watcher stopped") } func (m *memoryWatcher) Stop() { diff --git a/registry/memory/util.go b/registry/memory/util.go index 965c75b5..d78e3324 100644 --- a/registry/memory/util.go +++ b/registry/memory/util.go @@ -44,9 +44,13 @@ func recordToService(r *record) *registry.Service { endpoints := make([]*registry.Endpoint, len(r.Endpoints)) for i, e := range r.Endpoints { request := new(registry.Value) - *request = *e.Request + if e.Request != nil { + *request = *e.Request + } response := new(registry.Value) - *response = *e.Response + if e.Response != nil { + *response = *e.Response + } metadata := make(map[string]string) for k, v := range e.Metadata { diff --git a/router/table_test.go b/router/table_test.go index 50966f99..a05cb956 100644 --- a/router/table_test.go +++ b/router/table_test.go @@ -127,6 +127,8 @@ func TestQuery(t *testing.T) { routes, err := table.Query() if err != nil { t.Errorf("error looking up routes: %s", err) + } else if len(routes) == 0 { + t.Errorf("error looking up routes: not found") } // query routes particular network diff --git a/runtime/default.go b/runtime/default.go index f0c26eec..11ab7d32 100644 --- a/runtime/default.go +++ b/runtime/default.go @@ -195,6 +195,7 @@ func (r *runtime) Read(opts ...ReadOption) ([]*Service, error) { return k == v } + //nolint:prealloc var services []*Service for _, service := range r.services { @@ -258,10 +259,11 @@ func (r *runtime) Delete(s *Service) error { // List returns a slice of all services tracked by the runtime func (r *runtime) List() ([]*Service, error) { - var services []*Service r.RLock() defer r.RUnlock() + services := make([]*Service, 0, len(r.services)) + for _, service := range r.services { services = append(services, service.Service) } diff --git a/runtime/source/git/git.go b/runtime/source/git/git.go index f8d8000b..deaaa7ef 100644 --- a/runtime/source/git/git.go +++ b/runtime/source/git/git.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/micro/go-micro/runtime/source" - "gopkg.in/src-d/go-git.v4" + git "gopkg.in/src-d/go-git.v4" ) // Source retrieves source code diff --git a/server/grpc/grpc.go b/server/grpc/grpc.go index c365d33d..7d3d7426 100644 --- a/server/grpc/grpc.go +++ b/server/grpc/grpc.go @@ -178,7 +178,7 @@ func (g *grpcServer) handler(srv interface{}, stream grpc.ServerStream) error { fullMethod, ok := grpc.MethodFromServerStream(stream) if !ok { - return grpc.Errorf(codes.Internal, "method does not exist in context") + return status.Errorf(codes.Internal, "method does not exist in context") } serviceName, methodName, err := mgrpc.ServiceMethod(fullMethod) diff --git a/server/rpc_server.go b/server/rpc_server.go index 8fee1470..a22f13b6 100644 --- a/server/rpc_server.go +++ b/server/rpc_server.go @@ -880,13 +880,10 @@ func (s *rpcServer) Stop() error { ch := make(chan error) s.exit <- ch - var err error - select { - case err = <-ch: - s.Lock() - s.started = false - s.Unlock() - } + err := <-ch + s.Lock() + s.started = false + s.Unlock() return err } diff --git a/store/cloudflare/cloudflare.go b/store/cloudflare/cloudflare.go index 24ca69f0..3b9a5e8c 100644 --- a/store/cloudflare/cloudflare.go +++ b/store/cloudflare/cloudflare.go @@ -136,6 +136,7 @@ func (w *workersKV) Read(keys ...string) ([]*store.Record, error) { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() + //nolint:prealloc var records []*store.Record for _, k := range keys { diff --git a/store/etcd/etcd.go b/store/etcd/etcd.go index e45ce2d1..8ffa2d7d 100644 --- a/store/etcd/etcd.go +++ b/store/etcd/etcd.go @@ -17,6 +17,7 @@ type ekv struct { } func (e *ekv) Read(keys ...string) ([]*store.Record, error) { + //nolint:prealloc var values []*mvccpb.KeyValue for _, key := range keys { @@ -73,10 +74,10 @@ func (e *ekv) List() ([]*store.Record, error) { if err != nil { return nil, err } - var vals []*store.Record if keyval == nil || len(keyval.Kvs) == 0 { - return vals, nil + return nil, nil } + vals := make([]*store.Record, 0, len(keyval.Kvs)) for _, keyv := range keyval.Kvs { vals = append(vals, &store.Record{ Key: string(keyv.Key), diff --git a/store/memory/memory.go b/store/memory/memory.go index aa5f645f..01d1a44c 100644 --- a/store/memory/memory.go +++ b/store/memory/memory.go @@ -25,6 +25,7 @@ func (m *memoryStore) List() ([]*store.Record, error) { m.RLock() defer m.RUnlock() + //nolint:prealloc var values []*store.Record for _, v := range m.values { @@ -52,6 +53,7 @@ func (m *memoryStore) Read(keys ...string) ([]*store.Record, error) { m.RLock() defer m.RUnlock() + //nolint:prealloc var records []*store.Record for _, key := range keys { diff --git a/store/postgresql/postgresql_test.go b/store/postgresql/postgresql_test.go index 65d97e78..fffc974e 100644 --- a/store/postgresql/postgresql_test.go +++ b/store/postgresql/postgresql_test.go @@ -76,20 +76,20 @@ func TestSQL(t *testing.T) { records, err = sqlStore.Read("test") if err != nil { t.Error(err) - } else { - t.Logf("%# v\n", pretty.Formatter(records)) - if string(records[0].Value) != "bar" { - t.Error("Expected bar, got ", string(records[0].Value)) - } + } + t.Logf("%# v\n", pretty.Formatter(records)) + if string(records[0].Value) != "bar" { + t.Error("Expected bar, got ", string(records[0].Value)) } time.Sleep(61 * time.Second) - records, err = sqlStore.Read("test") - if err == nil { + _, err = sqlStore.Read("test") + switch err { + case nil: t.Error("Key test should have expired") - } else { - if err != store.ErrNotFound { - t.Error(err) - } + default: + t.Error(err) + case store.ErrNotFound: + break } } diff --git a/store/service/handler/handler.go b/store/service/handler/handler.go index f4dd0710..3f546a9d 100644 --- a/store/service/handler/handler.go +++ b/store/service/handler/handler.go @@ -30,7 +30,7 @@ func (s *Store) Read(ctx context.Context, req *pb.ReadRequest, rsp *pb.ReadRespo } func (s *Store) Write(ctx context.Context, req *pb.WriteRequest, rsp *pb.WriteResponse) error { - var records []*store.Record + records := make([]*store.Record, 0, len(req.Records)) for _, record := range req.Records { records = append(records, &store.Record{ diff --git a/store/service/service.go b/store/service/service.go index b3f8ad56..1cb486bc 100644 --- a/store/service/service.go +++ b/store/service/service.go @@ -60,7 +60,8 @@ func (s *serviceStore) Read(keys ...string) ([]*store.Record, error) { if err != nil { return nil, err } - var records []*store.Record + + records := make([]*store.Record, 0, len(rsp.Records)) for _, val := range rsp.Records { records = append(records, &store.Record{ Key: val.Key, @@ -73,7 +74,7 @@ func (s *serviceStore) Read(keys ...string) ([]*store.Record, error) { // Write a record func (s *serviceStore) Write(recs ...*store.Record) error { - var records []*pb.Record + records := make([]*pb.Record, 0, len(recs)) for _, record := range recs { records = append(records, &pb.Record{ diff --git a/sync/lock/memory/memory.go b/sync/lock/memory/memory.go index 84e0ca73..f8e46c7f 100644 --- a/sync/lock/memory/memory.go +++ b/sync/lock/memory/memory.go @@ -61,7 +61,7 @@ func (m *memoryLock) Acquire(id string, opts ...lock.AcquireOption) error { // set a timer for the leftover ttl if live > lk.ttl { // release the lock if it expired - m.Release(id) + _ = m.Release(id) } else { ttl = time.After(live) } @@ -94,7 +94,7 @@ lockLoop: break lockLoop case <-ttl: // ttl exceeded - m.Release(id) + _ = m.Release(id) // TODO: check the ttl again above ttl = nil // try acquire diff --git a/transport/quic/quic.go b/transport/quic/quic.go index 956c58f9..a39e9519 100644 --- a/transport/quic/quic.go +++ b/transport/quic/quic.go @@ -7,7 +7,7 @@ import ( "encoding/gob" "time" - "github.com/lucas-clemente/quic-go" + quic "github.com/lucas-clemente/quic-go" "github.com/micro/go-micro/transport" utls "github.com/micro/go-micro/util/tls" ) diff --git a/tunnel/default.go b/tunnel/default.go index 16ab2e59..da96540c 100644 --- a/tunnel/default.go +++ b/tunnel/default.go @@ -105,6 +105,7 @@ func (t *tun) listChannels() []string { t.RLock() defer t.RUnlock() + //nolint:prealloc var channels []string for _, session := range t.sessions { if session.session != "listener" { diff --git a/util/addr/addr.go b/util/addr/addr.go index 911dacb0..eb0a5972 100644 --- a/util/addr/addr.go +++ b/util/addr/addr.go @@ -39,6 +39,7 @@ func Extract(addr string) (string, error) { return "", fmt.Errorf("Failed to get interfaces! Err: %v", err) } + //nolint:prealloc var addrs []net.Addr var loAddrs []net.Addr for _, iface := range ifaces {