From 80e1b0398e67387f1e80f669736236553c5b8d24 Mon Sep 17 00:00:00 2001 From: Rob Findley Date: Tue, 25 Aug 2020 12:03:44 -0400 Subject: [PATCH] internal/lsp/lsprpc: make the LSP forwarder exit error clearer In cases where the remote panics, make it clearer in the forwarder logs that the remote has disconnected. Change-Id: Ic7f9370f615198274696a18adaefe7dc62cac02e Reviewed-on: https://go-review.googlesource.com/c/tools/+/250508 Run-TryBot: Robert Findley TryBot-Result: Gobot Gobot Reviewed-by: Heschi Kreinick --- internal/lsp/lsprpc/lsprpc.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/lsp/lsprpc/lsprpc.go b/internal/lsp/lsprpc/lsprpc.go index 2af6bdc69e..448c0e5862 100644 --- a/internal/lsp/lsprpc/lsprpc.go +++ b/internal/lsp/lsprpc/lsprpc.go @@ -251,10 +251,13 @@ func (f *Forwarder) ServeStream(ctx context.Context, clientConn jsonrpc2.Conn) e serverConn.Close() } - err = serverConn.Err() - if err == nil { - err = clientConn.Err() + err = nil + if serverConn.Err() != nil { + err = errors.Errorf("remote disconnected: %v", err) + } else if clientConn.Err() != nil { + err = errors.Errorf("client disconnected: %v", err) } + event.Log(ctx, fmt.Sprintf("forwarder: exited with error: %v", err)) return err }