From 83269bbdfbcf1806cd012b8c3a30b309993e75d3 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 14 Sep 2018 11:34:49 +0200 Subject: [PATCH] MavenServerManager: use blocking reads for mostly-idle external process to avoid wasting CPU on constant sleeping and waking up --- .../jetbrains/idea/maven/server/MavenServerManager.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java index 8b85a3124d9b..e938803e9da0 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java @@ -33,6 +33,7 @@ import com.intellij.openapi.util.text.StringUtilRt; import com.intellij.util.EnvironmentUtil; import com.intellij.util.PathUtil; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.io.BaseOutputReader; import com.intellij.util.xmlb.Converter; import com.intellij.util.xmlb.annotations.Attribute; import gnu.trove.THashMap; @@ -363,7 +364,13 @@ public class MavenServerManager extends RemoteObjectWrapper impleme protected OSProcessHandler startProcess() throws ExecutionException { SimpleJavaParameters params = createJavaParameters(); GeneralCommandLine commandLine = params.toCommandLine(); - OSProcessHandler processHandler = new OSProcessHandler(commandLine); + OSProcessHandler processHandler = new OSProcessHandler(commandLine) { + @NotNull + @Override + protected BaseOutputReader.Options readerOptions() { + return BaseOutputReader.Options.BLOCKING; + } + }; processHandler.setShouldDestroyProcessRecursively(false); return processHandler; }