From fb8315cec0d3f1381045ccafea4c541d7c666fe1 Mon Sep 17 00:00:00 2001 From: Shawn Hurley Date: Mon, 29 Jul 2024 15:26:54 -0400 Subject: [PATCH] :bug: adding timeout for RPC call (#678) This cuased a problem when the language server is OOM killed and the read step was always waiting causing an indefinite hang. This will timeout these requests. Signed-off-by: Shawn Hurley --- .../pkg/java_external_provider/service_client.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 ff01ca02..f3d8d2f8 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 @@ -11,6 +11,7 @@ import ( "regexp" "strings" "sync" + "time" "github.com/go-logr/logr" "github.com/konveyor/analyzer-lsp/jsonrpc2" @@ -137,7 +138,9 @@ func (p *javaServiceClient) GetAllSymbols(ctx context.Context, query, location s } var refs []protocol.WorkspaceSymbol - err := p.rpc.Call(ctx, "workspace/executeCommand", wsp, &refs) + // If it takes us 5min to complete a request, then we are in trouble + timeOutCtx, _ := context.WithTimeout(ctx, 5*time.Minute) + err := p.rpc.Call(timeOutCtx, "workspace/executeCommand", wsp, &refs) if err != nil { if jsonrpc2.IsRPCClosed(err) { p.log.Error(err, "connection to the language server is closed, language server is not running")