diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java index 7ac5a83c2..4c190c0dd 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java @@ -289,7 +289,9 @@ public class SpringProcessConnectorService { diagnosticService.diagnosticEvent(ShowMessageException .error("Failed to refresh live data from process " + processKey + " after retries: " + retryNo, e)); - disconnectProcess(processKey); + if (!connectedSuccess.containsKey(connector.getProcessKey())) { + disconnectProcess(processKey); + } } } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java index ecfc97290..655d0dbe4 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java @@ -241,7 +241,7 @@ public class SpringProcessLiveDataExtractorOverJMX { LiveMemoryMetricsModel metrics = getLiveMetrics(connection, domain, "jvm.gc.pause", tags); if(metrics != null) { - memoryMetricsList.add(getLiveMetrics(connection, domain, "jvm.gc.pause", tags)); + memoryMetricsList.add(metrics); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java index c96add9f5..ef444b156 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java @@ -376,7 +376,7 @@ public class RewriteRecipeRepository implements ApplicationContextAware { }).thenCompose(p -> { if (p.isPresent()) { try { - Optional edit = apply(r, p.get()); + Optional edit = computeWorkspaceEdit(r, p.get(), progressToken); return CompletableFuture.completedFuture(edit).thenCompose(we -> { if (we.isPresent()) { server.getProgressService().progressEvent(progressToken, "Applying document changes..."); @@ -404,9 +404,9 @@ public class RewriteRecipeRepository implements ApplicationContextAware { }); } - private Optional apply(Recipe r, IJavaProject project) { + private Optional computeWorkspaceEdit(Recipe r, IJavaProject project, String progressToken) { Path absoluteProjectDir = Paths.get(project.getLocationUri()); - server.getProgressService().progressEvent(r.getName(), "Parsing files..."); + server.getProgressService().progressEvent(progressToken, "Parsing files..."); MavenProjectParser projectParser = createRewriteMavenParser(absoluteProjectDir, new InMemoryExecutionContext(), p -> { TextDocument doc = server.getTextDocumentService().getLatestSnapshot(p.toUri().toString()); @@ -416,7 +416,7 @@ public class RewriteRecipeRepository implements ApplicationContextAware { return null; }); List sources = projectParser.parse(absoluteProjectDir, getClasspathEntries(project)); - server.getProgressService().progressEvent(r.getName(), "Computing changes..."); + server.getProgressService().progressEvent(progressToken, "Computing changes..."); RecipeRun reciperun = r.run(sources, new InMemoryExecutionContext(e -> log.error("", e))); List results = reciperun.getResults(); return ORDocUtils.createWorkspaceEdit(absoluteProjectDir, server.getTextDocumentService(), results);