From 2ef32813748b754e58e3b9336fd257aec967515b Mon Sep 17 00:00:00 2001 From: Caleb Doxsey Date: Mon, 6 Aug 2018 14:05:05 -0400 Subject: [PATCH] contrib/google.golang.org/grpc: fix race condition when setting metadata (#302) --- contrib/google.golang.org/grpc/client.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/google.golang.org/grpc/client.go b/contrib/google.golang.org/grpc/client.go index 842976d6f8..b0960ffc18 100644 --- a/contrib/google.golang.org/grpc/client.go +++ b/contrib/google.golang.org/grpc/client.go @@ -162,7 +162,10 @@ func injectSpanIntoContext(ctx context.Context) context.Context { return ctx } md, ok := metadata.FromIncomingContext(ctx) - if !ok { + if ok { + // we have to copy the metadata because its not safe to modify + md = md.Copy() + } else { md = metadata.MD{} } if err := tracer.Inject(span.Context(), grpcutil.MDCarrier(md)); err != nil {