From 64be627a6da586bb168521430bb503eb4c56d2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Kapka?= Date: Mon, 23 Nov 2020 21:38:32 +0100 Subject: [PATCH] Make grpc-headers flag work (#7932) --- validator/accounts/accounts_exit.go | 1 - validator/client/service.go | 27 ++++++++++++--------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/validator/accounts/accounts_exit.go b/validator/accounts/accounts_exit.go index 461f5d8fc3..22e9437714 100644 --- a/validator/accounts/accounts_exit.go +++ b/validator/accounts/accounts_exit.go @@ -173,7 +173,6 @@ func prepareClients(cliCtx *cli.Context) (*ethpb.BeaconNodeValidatorClient, *eth dialOpts := client.ConstructDialOptions( cliCtx.Int(cmd.GrpcMaxCallRecvMsgSizeFlag.Name), cliCtx.String(flags.CertFlag.Name), - strings.Split(cliCtx.String(flags.GrpcHeadersFlag.Name), ","), cliCtx.Uint(flags.GrpcRetriesFlag.Name), cliCtx.Duration(flags.GrpcRetryDelayFlag.Name), ) diff --git a/validator/client/service.go b/validator/client/service.go index a11f8597f6..fd28ba2b3a 100644 --- a/validator/client/service.go +++ b/validator/client/service.go @@ -126,7 +126,6 @@ func (v *ValidatorService) Start() { dialOpts := ConstructDialOptions( v.maxCallRecvMsgSize, v.withCert, - v.grpcHeaders, v.grpcRetries, v.grpcRetryDelay, streamInterceptor, @@ -134,6 +133,18 @@ func (v *ValidatorService) Start() { if dialOpts == nil { return } + + for _, hdr := range v.grpcHeaders { + if hdr != "" { + ss := strings.Split(hdr, "=") + if len(ss) != 2 { + log.Warnf("Incorrect gRPC header flag format. Skipping %v", hdr) + continue + } + v.ctx = metadata.AppendToOutgoingContext(v.ctx, ss[0], ss[1]) + } + } + conn, err := grpc.DialContext(v.ctx, v.endpoint, dialOpts...) if err != nil { log.Errorf("Could not dial endpoint: %s, %v", v.endpoint, err) @@ -236,7 +247,6 @@ func (v *ValidatorService) recheckKeys(ctx context.Context) { func ConstructDialOptions( maxCallRecvMsgSize int, withCert string, - grpcHeaders []string, grpcRetries uint, grpcRetryDelay time.Duration, extraOpts ...grpc.DialOption, @@ -260,25 +270,12 @@ func ConstructDialOptions( maxCallRecvMsgSize = 10 * 5 << 20 // Default 50Mb } - md := make(metadata.MD) - for _, hdr := range grpcHeaders { - if hdr != "" { - ss := strings.Split(hdr, "=") - if len(ss) != 2 { - log.Warnf("Incorrect gRPC header flag format. Skipping %v", hdr) - continue - } - md.Set(ss[0], ss[1]) - } - } - dialOpts := []grpc.DialOption{ transportSecurity, grpc.WithDefaultCallOptions( grpc.MaxCallRecvMsgSize(maxCallRecvMsgSize), grpc_retry.WithMax(grpcRetries), grpc_retry.WithBackoff(grpc_retry.BackoffLinear(grpcRetryDelay)), - grpc.Header(&md), ), grpc.WithStatsHandler(&ocgrpc.ClientHandler{}), grpc.WithUnaryInterceptor(middleware.ChainUnaryClient(