From ad47370a5112c2df7e8163d2a78793edf61f5b61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 08:12:13 +0000 Subject: [PATCH 1/3] Bump golang.org/x/net from 0.5.0 to 0.7.0 Bumps [golang.org/x/net](https://github.com/golang/net) from 0.5.0 to 0.7.0. - [Release notes](https://github.com/golang/net/releases) - [Commits](https://github.com/golang/net/compare/v0.5.0...v0.7.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 34178f0..722f149 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.16 require ( github.com/golang/protobuf v1.5.2 go.unistack.org/micro/v3 v3.10.14 - golang.org/x/net v0.5.0 + golang.org/x/net v0.7.0 google.golang.org/grpc v1.52.3 google.golang.org/protobuf v1.28.1 ) diff --git a/go.sum b/go.sum index a935c34..9918693 100644 --- a/go.sum +++ b/go.sum @@ -609,8 +609,8 @@ golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -714,12 +714,12 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -732,8 +732,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -- 2.45.2 From 92dcd1acd7cbd6da5e906035145887f124caaf8d Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Fri, 3 Mar 2023 13:08:06 +0300 Subject: [PATCH 2/3] allow to expose *grpc.Server Signed-off-by: Vasiliy Tolstov --- grpc.go | 60 +++++++++++++++++++++++++++------------------------ subscriber.go | 2 +- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/grpc.go b/grpc.go index 2be599c..130123d 100644 --- a/grpc.go +++ b/grpc.go @@ -39,13 +39,13 @@ const ( ) /* -type grpcServerReflection struct { +type ServerReflection struct { srv *grpc.Server s *serverReflectionServer } */ -type grpcServer struct { +type Server struct { handlers map[string]server.Handler srv *grpc.Server exit chan chan error @@ -60,9 +60,9 @@ type grpcServer struct { reflection bool } -func newGRPCServer(opts ...server.Option) server.Server { +func newServer(opts ...server.Option) *Server { // create a grpc server - g := &grpcServer{ + g := &Server{ opts: server.NewOptions(opts...), rpc: &rServer{ serviceMap: make(map[string]*service), @@ -91,7 +91,7 @@ func (r grpcRouter) ServeRequest(ctx context.Context, req server.Request, rsp se */ -func (g *grpcServer) configure(opts ...server.Option) error { +func (g *Server) configure(opts ...server.Option) error { g.Lock() defer g.Unlock() @@ -165,7 +165,7 @@ func (g *grpcServer) configure(opts ...server.Option) error { return nil } -func (g *grpcServer) getMaxMsgSize() int { +func (g *Server) getMaxMsgSize() int { if g.opts.Context == nil { return codec.DefaultMaxMsgSize } @@ -176,14 +176,14 @@ func (g *grpcServer) getMaxMsgSize() int { return s } -func (g *grpcServer) getCredentials() credentials.TransportCredentials { +func (g *Server) getCredentials() credentials.TransportCredentials { if g.opts.TLSConfig != nil { return credentials.NewTLS(g.opts.TLSConfig) } return nil } -func (g *grpcServer) getGrpcOptions() []grpc.ServerOption { +func (g *Server) getGrpcOptions() []grpc.ServerOption { if g.opts.Context == nil { return nil } @@ -196,7 +196,7 @@ func (g *grpcServer) getGrpcOptions() []grpc.ServerOption { return opts } -func (g *grpcServer) handler(srv interface{}, stream grpc.ServerStream) (err error) { +func (g *Server) handler(srv interface{}, stream grpc.ServerStream) (err error) { fullMethod, ok := grpc.MethodFromServerStream(stream) if !ok { return status.Errorf(codes.Internal, "method does not exist in context") @@ -302,7 +302,7 @@ func (g *grpcServer) handler(srv interface{}, stream grpc.ServerStream) (err err /* if svc == nil && g.reflection && methodName == "ServerReflectionInfo" { - rfl := &grpcServerReflection{srv: g.srv, s: &serverReflectionServer{s: g.srv}} + rfl := &ServerReflection{srv: g.srv, s: &serverReflectionServer{s: g.srv}} svc = &service{} svc.typ = reflect.TypeOf(rfl) svc.rcvr = reflect.ValueOf(rfl) @@ -350,7 +350,7 @@ func (g *grpcServer) handler(srv interface{}, stream grpc.ServerStream) (err err return g.processStream(ctx, stream, svc, mtype, ct) } -func (g *grpcServer) processRequest(ctx context.Context, stream grpc.ServerStream, service *service, mtype *methodType, ct string) error { +func (g *Server) processRequest(ctx context.Context, stream grpc.ServerStream, service *service, mtype *methodType, ct string) error { // for { var err error var argv, replyv reflect.Value @@ -493,12 +493,12 @@ func (s *reflectStream) RecvMsg(m interface{}) error { return s.stream.Recv(m) } -func (g *grpcServerReflection) ServerReflectionInfo(ctx context.Context, stream server.Stream) error { +func (g *ServerReflection) ServerReflectionInfo(ctx context.Context, stream server.Stream) error { return g.s.ServerReflectionInfo(&reflectStream{stream}) } */ -func (g *grpcServer) processStream(ctx context.Context, stream grpc.ServerStream, service *service, mtype *methodType, ct string) error { +func (g *Server) processStream(ctx context.Context, stream grpc.ServerStream, service *service, mtype *methodType, ct string) error { opts := g.opts r := &rpcRequest{ @@ -572,7 +572,7 @@ func (g *grpcServer) processStream(ctx context.Context, stream grpc.ServerStream return status.New(statusCode, statusDesc).Err() } -func (g *grpcServer) newCodec(ct string) (codec.Codec, error) { +func (g *Server) newCodec(ct string) (codec.Codec, error) { g.RLock() defer g.RUnlock() @@ -587,7 +587,7 @@ func (g *grpcServer) newCodec(ct string) (codec.Codec, error) { return nil, codec.ErrUnknownContentType } -func (g *grpcServer) Options() server.Options { +func (g *Server) Options() server.Options { g.RLock() opts := g.opts g.RUnlock() @@ -595,15 +595,15 @@ func (g *grpcServer) Options() server.Options { return opts } -func (g *grpcServer) Init(opts ...server.Option) error { +func (g *Server) Init(opts ...server.Option) error { return g.configure(opts...) } -func (g *grpcServer) NewHandler(h interface{}, opts ...server.HandlerOption) server.Handler { +func (g *Server) NewHandler(h interface{}, opts ...server.HandlerOption) server.Handler { return newRPCHandler(h, opts...) } -func (g *grpcServer) Handle(h server.Handler) error { +func (g *Server) Handle(h server.Handler) error { if err := g.rpc.register(h.Handler()); err != nil { return err } @@ -612,11 +612,11 @@ func (g *grpcServer) Handle(h server.Handler) error { return nil } -func (g *grpcServer) NewSubscriber(topic string, sb interface{}, opts ...server.SubscriberOption) server.Subscriber { +func (g *Server) NewSubscriber(topic string, sb interface{}, opts ...server.SubscriberOption) server.Subscriber { return newSubscriber(topic, sb, opts...) } -func (g *grpcServer) Subscribe(sb server.Subscriber) error { +func (g *Server) Subscribe(sb server.Subscriber) error { sub, ok := sb.(*subscriber) if !ok { return fmt.Errorf("invalid subscriber: expected *subscriber") @@ -640,7 +640,7 @@ func (g *grpcServer) Subscribe(sb server.Subscriber) error { return nil } -func (g *grpcServer) Register() error { +func (g *Server) Register() error { g.RLock() rsvc := g.rsvc config := g.opts @@ -745,7 +745,7 @@ func (g *grpcServer) Register() error { return nil } -func (g *grpcServer) Deregister() error { +func (g *Server) Deregister() error { var err error g.RLock() @@ -799,7 +799,7 @@ func (g *grpcServer) Deregister() error { return nil } -func (g *grpcServer) Start() error { +func (g *Server) Start() error { g.RLock() if g.started { g.RUnlock() @@ -987,7 +987,7 @@ func (g *grpcServer) Start() error { return nil } -func (g *grpcServer) Stop() error { +func (g *Server) Stop() error { g.RLock() if !g.started { g.RUnlock() @@ -1007,14 +1007,18 @@ func (g *grpcServer) Stop() error { return err } -func (g *grpcServer) String() string { +func (g *Server) String() string { return "grpc" } -func (g *grpcServer) Name() string { +func (g *Server) Name() string { return g.opts.Name } -func NewServer(opts ...server.Option) server.Server { - return newGRPCServer(opts...) +func (g *Server) GRPCServer() *grpc.Server { + return g.srv +} + +func NewServer(opts ...server.Option) *Server { + return newServer(opts...) } diff --git a/subscriber.go b/subscriber.go index b29e691..94f11f5 100644 --- a/subscriber.go +++ b/subscriber.go @@ -102,7 +102,7 @@ func newSubscriber(topic string, sub interface{}, opts ...server.SubscriberOptio } } -func (g *grpcServer) createSubHandler(sb *subscriber, opts server.Options) broker.Handler { +func (g *Server) createSubHandler(sb *subscriber, opts server.Options) broker.Handler { return func(p broker.Event) (err error) { defer func() { if r := recover(); r != nil { -- 2.45.2 From f0b6370ee1cbf10721269013281a417c11dd1845 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sat, 4 Mar 2023 16:25:50 +0300 Subject: [PATCH 3/3] move codec registration to init phase Signed-off-by: Vasiliy Tolstov --- grpc.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/grpc.go b/grpc.go index 130123d..da533d4 100644 --- a/grpc.go +++ b/grpc.go @@ -128,6 +128,10 @@ func (g *Server) configure(opts ...server.Option) error { } } + for _, k := range g.opts.Codecs { + encoding.RegisterCodec(&wrapMicroCodec{k}) + } + maxMsgSize := g.getMaxMsgSize() gopts := []grpc.ServerOption{ @@ -809,10 +813,6 @@ func (g *Server) Start() error { config := g.Options() - for _, k := range config.Codecs { - encoding.RegisterCodec(&wrapMicroCodec{k}) - } - // micro: config.Transport.Listen(config.Address) var ts net.Listener var err error -- 2.45.2