add compression & metadata logging

This commit is contained in:
Dawid Wysokiński 2023-05-04 07:21:19 +02:00
parent bc61ba9c6e
commit 9d402178c2
Signed by: Kichiyaki
GPG Key ID: B5445E357FB8B892
2 changed files with 28 additions and 4 deletions

View File

@ -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) {

View File

@ -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