From 9d402178c2ea7189e35d26243aea266c3b1028f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wysoki=C5=84ski?= Date: Thu, 4 May 2023 07:21:19 +0200 Subject: [PATCH] add compression & metadata logging --- cmd/client/main.go | 19 +++++++++++++++++-- cmd/server/main.go | 13 +++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/cmd/client/main.go b/cmd/client/main.go index 6bc9c43..2f24364 100644 --- a/cmd/client/main.go +++ b/cmd/client/main.go @@ -22,6 +22,8 @@ import ( "google.golang.org/genproto/googleapis/rpc/errdetails" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/encoding/gzip" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -138,11 +140,24 @@ func newTransportCredentials() (credentials.TransportCredentials, error) { func sayHello(ctx context.Context, client proto.GreeterClient, logger *zap.Logger) { name := uuid.NewString() logger.Info("sending request", zap.String("name", name)) - reply, err := client.SayHello(ctx, &proto.HelloRequest{Name: name}) + headers := metadata.New(nil) + trailer := metadata.New(nil) + reply, err := client.SayHello( + metadata.NewOutgoingContext(ctx, metadata.Pairs("k1", "v1")), + &proto.HelloRequest{Name: name}, + grpc.UseCompressor(gzip.Name), + grpc.Header(&headers), + grpc.Trailer(&trailer), + ) if err != nil { logger.Fatal("something went wrong while calling SayHello", zap.Error(err)) } - logger.Info("reply received", zap.String("message", reply.GetMessage())) + logger.Info( + "reply received", + zap.String("message", reply.GetMessage()), + zap.Any("headers", headers), + zap.Any("trailer", trailer), + ) } func sayHelloToJames(ctx context.Context, client proto.GreeterClient, logger *zap.Logger) { diff --git a/cmd/server/main.go b/cmd/server/main.go index f118fb1..0d6bfff 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -23,6 +23,8 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" + _ "google.golang.org/grpc/encoding/gzip" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -99,7 +101,9 @@ func newServer(address string, logger *zap.Logger) (*server, error) { ), ) - proto.RegisterGreeterServer(srv, &greeterServer{}) + proto.RegisterGreeterServer(srv, &greeterServer{ + logger: logger, + }) return &server{ lis: lis, @@ -149,9 +153,14 @@ func createPanicHandler(logger *zap.Logger) grpc_recovery.RecoveryHandlerFunc { type greeterServer struct { proto.UnimplementedGreeterServer + logger *zap.Logger } -func (g *greeterServer) SayHello(_ context.Context, r *proto.HelloRequest) (*proto.HelloReply, error) { +func (g *greeterServer) SayHello(ctx context.Context, r *proto.HelloRequest) (*proto.HelloReply, error) { + md, ok := metadata.FromIncomingContext(ctx) + if ok { + g.logger.Debug("received metadata", zap.Any("metadata", md)) + } return &proto.HelloReply{ Message: buildHelloMsg(r.GetName()), }, nil