From ce2ef8c9696e4de0c4e0bf049b9bc6c23d08ed48 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Tue, 29 Sep 2015 19:05:13 -0700 Subject: [PATCH 1/6] Enable payload tracing for unary rpc --- server.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/server.go b/server.go index ba68a215..c0728dce 100644 --- a/server.go +++ b/server.go @@ -52,7 +52,7 @@ import ( "google.golang.org/grpc/transport" ) -type methodHandler func(srv interface{}, ctx context.Context, codec Codec, buf []byte) (interface{}, error) +type methodHandler func(srv interface{}, ctx context.Context, decodeFunc func([]byte, interface{}) error, buf []byte) (interface{}, error) // MethodDesc represents an RPC service's method specification. type MethodDesc struct { @@ -320,16 +320,25 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } return err } - if traceInfo.tr != nil { + //if traceInfo.tr != nil { // TODO: set payload.msg to something that // prints usefully with %s; req is a []byte. - traceInfo.tr.LazyLog(&payload{sent: false}, true) - } + //traceInfo.tr.LazyLog(&payload{sent: false}, true) + //} switch pf { case compressionNone: statusCode := codes.OK statusDesc := "" - reply, appErr := md.Handler(srv.server, ctx, s.opts.codec, req) + df := func(b []byte, v interface{}) error { + if err := s.opts.codec.Unmarshal(b, v); err != nil { + return err + } + if traceInfo.tr != nil { + traceInfo.tr.LazyLog(&payload{sent: false, msg: v}, true) + } + return nil + } + reply, appErr := md.Handler(srv.server, ctx, df, req) if appErr != nil { if err, ok := appErr.(rpcError); ok { statusCode = err.code From ef43a528c10e18bc77ed76b5d84379ceca813852 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Tue, 29 Sep 2015 19:07:43 -0700 Subject: [PATCH 2/6] example generated code --- benchmark/grpc_testing/test.pb.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/benchmark/grpc_testing/test.pb.go b/benchmark/grpc_testing/test.pb.go index 619c450c..5561c231 100644 --- a/benchmark/grpc_testing/test.pb.go +++ b/benchmark/grpc_testing/test.pb.go @@ -419,9 +419,10 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func([]byte, interface{}) error, buf []byte) (interface{}, error) { in := new(SimpleRequest) - if err := codec.Unmarshal(buf, in); err != nil { + //if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(buf, in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in) From a27bb5b14ae74c8e9cb1a3385c96dd83042bc507 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Tue, 29 Sep 2015 19:08:55 -0700 Subject: [PATCH 3/6] remove dead code --- benchmark/grpc_testing/test.pb.go | 1 - server.go | 5 ----- 2 files changed, 6 deletions(-) diff --git a/benchmark/grpc_testing/test.pb.go b/benchmark/grpc_testing/test.pb.go index 5561c231..d8511b85 100644 --- a/benchmark/grpc_testing/test.pb.go +++ b/benchmark/grpc_testing/test.pb.go @@ -421,7 +421,6 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func([]byte, interface{}) error, buf []byte) (interface{}, error) { in := new(SimpleRequest) - //if err := codec.Unmarshal(buf, in); err != nil { if err := decodeFunc(buf, in); err != nil { return nil, err } diff --git a/server.go b/server.go index c0728dce..0be82b7e 100644 --- a/server.go +++ b/server.go @@ -320,11 +320,6 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } return err } - //if traceInfo.tr != nil { - // TODO: set payload.msg to something that - // prints usefully with %s; req is a []byte. - //traceInfo.tr.LazyLog(&payload{sent: false}, true) - //} switch pf { case compressionNone: statusCode := codes.OK From a71db53441b6d1cb85477c56894683f0f719e543 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Tue, 29 Sep 2015 20:10:20 -0700 Subject: [PATCH 4/6] remove slice param --- benchmark/grpc_testing/test.pb.go | 4 ++-- server.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmark/grpc_testing/test.pb.go b/benchmark/grpc_testing/test.pb.go index d8511b85..889525ad 100644 --- a/benchmark/grpc_testing/test.pb.go +++ b/benchmark/grpc_testing/test.pb.go @@ -419,9 +419,9 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func([]byte, interface{}) error, buf []byte) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(SimpleRequest) - if err := decodeFunc(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in) diff --git a/server.go b/server.go index 0be82b7e..6df688ce 100644 --- a/server.go +++ b/server.go @@ -52,7 +52,7 @@ import ( "google.golang.org/grpc/transport" ) -type methodHandler func(srv interface{}, ctx context.Context, decodeFunc func([]byte, interface{}) error, buf []byte) (interface{}, error) +type methodHandler func(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) // MethodDesc represents an RPC service's method specification. type MethodDesc struct { @@ -324,8 +324,8 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. case compressionNone: statusCode := codes.OK statusDesc := "" - df := func(b []byte, v interface{}) error { - if err := s.opts.codec.Unmarshal(b, v); err != nil { + df := func(v interface{}) error { + if err := s.opts.codec.Unmarshal(req, v); err != nil { return err } if traceInfo.tr != nil { @@ -333,7 +333,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } return nil } - reply, appErr := md.Handler(srv.server, ctx, df, req) + reply, appErr := md.Handler(srv.server, ctx, df) if appErr != nil { if err, ok := appErr.(rpcError); ok { statusCode = err.code From 1d81cf4f2213b8029f0df1de9a7720ca5d566cf9 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Thu, 1 Oct 2015 14:35:07 -0700 Subject: [PATCH 5/6] fix all the generated code --- examples/helloworld/helloworld/helloworld.pb.go | 4 ++-- examples/route_guide/routeguide/route_guide.pb.go | 4 ++-- health/grpc_health_v1alpha/health.pb.go | 4 ++-- interop/grpc_testing/test.pb.go | 8 ++++---- test/grpc_testing/test.pb.go | 8 ++++---- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/helloworld/helloworld/helloworld.pb.go b/examples/helloworld/helloworld/helloworld.pb.go index 1ff931a3..f9390dbc 100644 --- a/examples/helloworld/helloworld/helloworld.pb.go +++ b/examples/helloworld/helloworld/helloworld.pb.go @@ -84,9 +84,9 @@ func RegisterGreeterServer(s *grpc.Server, srv GreeterServer) { s.RegisterService(&_Greeter_serviceDesc, srv) } -func _Greeter_SayHello_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _Greeter_SayHello_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(HelloRequest) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(GreeterServer).SayHello(ctx, in) diff --git a/examples/route_guide/routeguide/route_guide.pb.go b/examples/route_guide/routeguide/route_guide.pb.go index fcf5c748..487a4dae 100644 --- a/examples/route_guide/routeguide/route_guide.pb.go +++ b/examples/route_guide/routeguide/route_guide.pb.go @@ -310,9 +310,9 @@ func RegisterRouteGuideServer(s *grpc.Server, srv RouteGuideServer) { s.RegisterService(&_RouteGuide_serviceDesc, srv) } -func _RouteGuide_GetFeature_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _RouteGuide_GetFeature_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(Point) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(RouteGuideServer).GetFeature(ctx, in) diff --git a/health/grpc_health_v1alpha/health.pb.go b/health/grpc_health_v1alpha/health.pb.go index c333a975..6b5ef31f 100644 --- a/health/grpc_health_v1alpha/health.pb.go +++ b/health/grpc_health_v1alpha/health.pb.go @@ -108,9 +108,9 @@ func RegisterHealthServer(s *grpc.Server, srv HealthServer) { s.RegisterService(&_Health_serviceDesc, srv) } -func _Health_Check_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _Health_Check_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(HealthCheckRequest) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(HealthServer).Check(ctx, in) diff --git a/interop/grpc_testing/test.pb.go b/interop/grpc_testing/test.pb.go index b25e98b8..26d1a44b 100755 --- a/interop/grpc_testing/test.pb.go +++ b/interop/grpc_testing/test.pb.go @@ -539,9 +539,9 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(Empty) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).EmptyCall(ctx, in) @@ -551,9 +551,9 @@ func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, codec return out, nil } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(SimpleRequest) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in) diff --git a/test/grpc_testing/test.pb.go b/test/grpc_testing/test.pb.go index b25e98b8..26d1a44b 100644 --- a/test/grpc_testing/test.pb.go +++ b/test/grpc_testing/test.pb.go @@ -539,9 +539,9 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(Empty) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).EmptyCall(ctx, in) @@ -551,9 +551,9 @@ func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, codec return out, nil } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, codec grpc.Codec, buf []byte) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { in := new(SimpleRequest) - if err := codec.Unmarshal(buf, in); err != nil { + if err := decodeFunc(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in) From a15e3b9562b16d2dd5caf686a79e23d3711b9893 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Thu, 1 Oct 2015 16:26:00 -0700 Subject: [PATCH 6/6] decodeFunc -> dec --- benchmark/grpc_testing/test.pb.go | 4 ++-- examples/helloworld/helloworld/helloworld.pb.go | 4 ++-- examples/route_guide/routeguide/route_guide.pb.go | 4 ++-- health/grpc_health_v1alpha/health.pb.go | 4 ++-- interop/grpc_testing/test.pb.go | 8 ++++---- server.go | 2 +- test/grpc_testing/test.pb.go | 8 ++++---- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/benchmark/grpc_testing/test.pb.go b/benchmark/grpc_testing/test.pb.go index 889525ad..74e13c9e 100644 --- a/benchmark/grpc_testing/test.pb.go +++ b/benchmark/grpc_testing/test.pb.go @@ -419,9 +419,9 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(SimpleRequest) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in) diff --git a/examples/helloworld/helloworld/helloworld.pb.go b/examples/helloworld/helloworld/helloworld.pb.go index f9390dbc..366b23b6 100644 --- a/examples/helloworld/helloworld/helloworld.pb.go +++ b/examples/helloworld/helloworld/helloworld.pb.go @@ -84,9 +84,9 @@ func RegisterGreeterServer(s *grpc.Server, srv GreeterServer) { s.RegisterService(&_Greeter_serviceDesc, srv) } -func _Greeter_SayHello_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(HelloRequest) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(GreeterServer).SayHello(ctx, in) diff --git a/examples/route_guide/routeguide/route_guide.pb.go b/examples/route_guide/routeguide/route_guide.pb.go index 487a4dae..9ac9029a 100644 --- a/examples/route_guide/routeguide/route_guide.pb.go +++ b/examples/route_guide/routeguide/route_guide.pb.go @@ -310,9 +310,9 @@ func RegisterRouteGuideServer(s *grpc.Server, srv RouteGuideServer) { s.RegisterService(&_RouteGuide_serviceDesc, srv) } -func _RouteGuide_GetFeature_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _RouteGuide_GetFeature_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(Point) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(RouteGuideServer).GetFeature(ctx, in) diff --git a/health/grpc_health_v1alpha/health.pb.go b/health/grpc_health_v1alpha/health.pb.go index 6b5ef31f..96eba6f8 100644 --- a/health/grpc_health_v1alpha/health.pb.go +++ b/health/grpc_health_v1alpha/health.pb.go @@ -108,9 +108,9 @@ func RegisterHealthServer(s *grpc.Server, srv HealthServer) { s.RegisterService(&_Health_serviceDesc, srv) } -func _Health_Check_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _Health_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(HealthCheckRequest) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(HealthServer).Check(ctx, in) diff --git a/interop/grpc_testing/test.pb.go b/interop/grpc_testing/test.pb.go index 26d1a44b..bd492fef 100755 --- a/interop/grpc_testing/test.pb.go +++ b/interop/grpc_testing/test.pb.go @@ -539,9 +539,9 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(Empty) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).EmptyCall(ctx, in) @@ -551,9 +551,9 @@ func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, decode return out, nil } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(SimpleRequest) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in) diff --git a/server.go b/server.go index 6df688ce..181e38cc 100644 --- a/server.go +++ b/server.go @@ -52,7 +52,7 @@ import ( "google.golang.org/grpc/transport" ) -type methodHandler func(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) +type methodHandler func(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) // MethodDesc represents an RPC service's method specification. type MethodDesc struct { diff --git a/test/grpc_testing/test.pb.go b/test/grpc_testing/test.pb.go index 26d1a44b..bd492fef 100644 --- a/test/grpc_testing/test.pb.go +++ b/test/grpc_testing/test.pb.go @@ -539,9 +539,9 @@ func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { s.RegisterService(&_TestService_serviceDesc, srv) } -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(Empty) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).EmptyCall(ctx, in) @@ -551,9 +551,9 @@ func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, decode return out, nil } -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, decodeFunc func(interface{}) error) (interface{}, error) { +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { in := new(SimpleRequest) - if err := decodeFunc(in); err != nil { + if err := dec(in); err != nil { return nil, err } out, err := srv.(TestServiceServer).UnaryCall(ctx, in)