From 751d66bde0bf94c7a59b68c188ef11a289f68bc3 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Wed, 14 Jun 2023 11:50:22 +0300 Subject: [PATCH] [#140] Use gRPC interceptor from observability package Previous SDK implementation had implicit gRPC interceptor for tracing. Now pool constructors allow any dial options, so gateway should manually pass tracing interceptors from observability package. Signed-off-by: Alex Vanin --- cmd/s3-gw/app.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cmd/s3-gw/app.go b/cmd/s3-gw/app.go index d672d85..8093e35 100644 --- a/cmd/s3-gw/app.go +++ b/cmd/s3-gw/app.go @@ -14,6 +14,7 @@ import ( "time" "git.frostfs.info/TrueCloudLab/frostfs-observability/tracing" + grpctracing "git.frostfs.info/TrueCloudLab/frostfs-observability/tracing/grpc" "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api" "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/auth" "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/cache" @@ -311,6 +312,19 @@ func getPools(ctx context.Context, logger *zap.Logger, cfg *viper.Viper) (*pool. prm.SetLogger(logger) prmTree.SetLogger(logger) + var apiGRPCDialOpts []grpc.DialOption + var treeGRPCDialOpts = []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} + if cfg.GetBool(cfgTracingEnabled) { + interceptors := []grpc.DialOption{ + grpc.WithUnaryInterceptor(grpctracing.NewUnaryClientInteceptor()), + grpc.WithStreamInterceptor(grpctracing.NewStreamClientInterceptor()), + } + treeGRPCDialOpts = append(treeGRPCDialOpts, interceptors...) + apiGRPCDialOpts = append(apiGRPCDialOpts, interceptors...) + } + prm.SetGRPCDialOptions(apiGRPCDialOpts...) + prmTree.SetGRPCDialOptions(treeGRPCDialOpts...) + p, err := pool.NewPool(prm) if err != nil { logger.Fatal("failed to create connection pool", zap.Error(err)) @@ -320,7 +334,6 @@ func getPools(ctx context.Context, logger *zap.Logger, cfg *viper.Viper) (*pool. logger.Fatal("failed to dial connection pool", zap.Error(err)) } - prmTree.SetGRPCDialOptions(grpc.WithTransportCredentials(insecure.NewCredentials())) treePool, err := treepool.NewPool(prmTree) if err != nil { logger.Fatal("failed to create tree pool", zap.Error(err))