From 34f9123ac439a4c6d1ff3b9ac39587b638dfb52c Mon Sep 17 00:00:00 2001 From: Menghan Li Date: Wed, 28 Jul 2021 10:11:19 -0700 Subject: [PATCH] [v1.39.x_race] transport: fix race accessing s.recvCompress --- internal/transport/http2_client.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/transport/http2_client.go b/internal/transport/http2_client.go index d10b6aacbcf..17fc4503c5e 100644 --- a/internal/transport/http2_client.go +++ b/internal/transport/http2_client.go @@ -1275,6 +1275,7 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { contentTypeErr string grpcMessage string statusGen *status.Status + recvCompress string httpStatus string rawStatus string @@ -1292,7 +1293,7 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { mdata[hf.Name] = append(mdata[hf.Name], hf.Value) isGRPC = true case "grpc-encoding": - s.recvCompress = hf.Value + recvCompress = hf.Value case "grpc-status": rawStatus = hf.Value case "grpc-message": @@ -1384,6 +1385,7 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { // These values can be set without any synchronization because // stream goroutine will read it only after seeing a closed // headerChan which we'll close after setting this. + s.recvCompress = recvCompress if len(mdata) > 0 { s.header = mdata }