From 20551e1783f8fddc9265c9c2c68e6b27c5334bbd Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Mon, 28 Jun 2021 14:22:25 -0700 Subject: [PATCH] internal/transport: do not mask ConnectionError (#4561) (#4569) --- internal/transport/http2_client.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/transport/http2_client.go b/internal/transport/http2_client.go index 119f01e3ebc..d10b6aacbcf 100644 --- a/internal/transport/http2_client.go +++ b/internal/transport/http2_client.go @@ -877,12 +877,18 @@ func (t *http2Client) Close(err error) { // Append info about previous goaways if there were any, since this may be important // for understanding the root cause for this connection to be closed. _, goAwayDebugMessage := t.GetGoAwayReason() + + var st *status.Status if len(goAwayDebugMessage) > 0 { - err = fmt.Errorf("closing transport due to: %v, received prior goaway: %v", err, goAwayDebugMessage) + st = status.Newf(codes.Unavailable, "closing transport due to: %v, received prior goaway: %v", err, goAwayDebugMessage) + err = st.Err() + } else { + st = status.New(codes.Unavailable, err.Error()) } + // Notify all active streams. for _, s := range streams { - t.closeStream(s, err, false, http2.ErrCodeNo, status.New(codes.Unavailable, err.Error()), nil, false) + t.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false) } if t.statsHandler != nil { connEnd := &stats.ConnEnd{