From b56144b5dd9beeb2c037f6b8b9cb5a6f78c15f24 Mon Sep 17 00:00:00 2001 From: Alejandro Brugarolas Date: Thu, 20 Jun 2024 12:03:31 +0200 Subject: [PATCH] update logging of closed RPC errors Signed-off-by: Alejandro Brugarolas --- .../java_external_provider/service_client.go | 18 ++++++++++++++---- jsonrpc2/rpcerr.go | 13 +++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 jsonrpc2/rpcerr.go diff --git a/external-providers/java-external-provider/pkg/java_external_provider/service_client.go b/external-providers/java-external-provider/pkg/java_external_provider/service_client.go index ccb83704..e3bf373a 100644 --- a/external-providers/java-external-provider/pkg/java_external_provider/service_client.go +++ b/external-providers/java-external-provider/pkg/java_external_provider/service_client.go @@ -125,8 +125,10 @@ func (p *javaServiceClient) GetAllSymbols(ctx context.Context, query, location s var refs []protocol.WorkspaceSymbol err := p.rpc.Call(ctx, "workspace/executeCommand", wsp, &refs) - if err != nil { - p.log.Error(err, "unable to ask for tackle rule entry") + if jsonrpc2.IsRPCClosed(err) { + p.log.Error(err, "connection to the language server is closed, language server is not running") + } else { + p.log.Error(err, "unable to ask for Konveyor rule entry") } return refs @@ -167,7 +169,11 @@ func (p *javaServiceClient) GetAllReferences(ctx context.Context, symbol protoco res := []protocol.Location{} err := p.rpc.Call(ctx, "textDocument/references", params, &res) if err != nil { - fmt.Printf("Error rpc: %v", err) + if jsonrpc2.IsRPCClosed(err) { + p.log.Error(err, "connection to the language server is closed, language server is not running") + } else { + fmt.Printf("Error rpc: %v", err) + } } return res } @@ -238,7 +244,11 @@ func (p *javaServiceClient) initialization(ctx context.Context) { var result protocol.InitializeResult for i := 0; i < 10; i++ { if err := p.rpc.Call(ctx, "initialize", params, &result); err != nil { - p.log.Error(err, "initialize failed") + if jsonrpc2.IsRPCClosed(err) { + p.log.Error(err, "connection to the language server is closed, language server is not running") + } else { + p.log.Error(err, "initialize failed") + } continue } break diff --git a/jsonrpc2/rpcerr.go b/jsonrpc2/rpcerr.go new file mode 100644 index 00000000..3514cb03 --- /dev/null +++ b/jsonrpc2/rpcerr.go @@ -0,0 +1,13 @@ +package jsonrpc2 + +import ( + "strings" +) + +var errFileClosed = "file already closed" +var errBrokenPipe = "broken pipe" + +func IsRPCClosed(err error) bool { + var errMsg = err.Error() + return strings.HasSuffix(errMsg, errFileClosed) || strings.HasSuffix(errMsg, errBrokenPipe) +}