From 5654a67594c4a508b2f5fa3df2d3d98abb054cfc Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Fri, 6 Mar 2020 13:57:37 +0100 Subject: [PATCH] add additional logging to see how long the language server takes to respond to a message from the client -> trying to identify timeout problems in the long run --- .../languageserver/LanguageServerRunner.java | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LanguageServerRunner.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LanguageServerRunner.java index d1514f2d9..289654890 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LanguageServerRunner.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LanguageServerRunner.java @@ -26,6 +26,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.function.Function; +import org.apache.commons.lang3.StringUtils; import org.eclipse.lsp4j.jsonrpc.Launcher; import org.eclipse.lsp4j.jsonrpc.MessageConsumer; import org.eclipse.lsp4j.services.LanguageClient; @@ -161,9 +162,27 @@ public class LanguageServerRunner implements CommandLineRunner { int serverPort = properties.getStandalonePort(); log.info("Starting LS as standlone server port = {}", serverPort); - Function wrapper = consumer -> { - MessageConsumer result = consumer; - return result; +// Function wrapper = consumer -> { +// MessageConsumer result = consumer; +// return result; +// }; + + Function wrapper = (MessageConsumer consumer) -> { + return (msg) -> { + try { + long beforeConsumingMessage = System.currentTimeMillis(); + + consumer.consume(msg); + + long afterConsumingMessage = System.currentTimeMillis(); + String shortMessage = StringUtils.left(msg.toString(), 140); + log.info("working on message took " + (afterConsumingMessage - beforeConsumingMessage) + "ms - message content: " + shortMessage); + + } catch (UnsupportedOperationException e) { + //log a warning and ignore. We are getting some messages from vsCode the server doesn't know about + log.warn("Unsupported message was ignored!", e); + } + }; }; Launcher launcher = createSocketLauncher(languageServer, STS4LanguageClient.class, @@ -221,7 +240,14 @@ public class LanguageServerRunner implements CommandLineRunner { Function wrapper = (MessageConsumer consumer) -> { return (msg) -> { try { + long beforeConsumingMessage = System.currentTimeMillis(); + consumer.consume(msg); + + long afterConsumingMessage = System.currentTimeMillis(); + String shortMessage = StringUtils.left(msg.toString(), 140); + log.info("working on message took " + (afterConsumingMessage - beforeConsumingMessage) + "ms - message content: " + shortMessage); + } catch (UnsupportedOperationException e) { //log a warning and ignore. We are getting some messages from vsCode the server doesn't know about log.warn("Unsupported message was ignored!", e);