From 4a2a13527b6c4cc9e8cc52fcb700c6719637217e Mon Sep 17 00:00:00 2001 From: aboyko Date: Wed, 10 Aug 2022 16:21:35 -0400 Subject: [PATCH] Attempt at fixing busyReconcile flag --- .../languageserver/util/SimpleLanguageServer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java index 08fd5e5a3..8d8d32aa5 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java @@ -615,7 +615,11 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC log.debug("Reconcile skipped due to document doesn't exist anymore {}", docId.getUri()); return; } - + + if (reconcileRequests.isEmpty()) { + busyReconcile = new CompletableFuture<>(); + } + String uri = docId.getUri(); CompletableFuture newFuture = new CompletableFuture(); CompletableFuture oldFuture = reconcileRequests.putIfAbsent(uri, newFuture); @@ -624,7 +628,7 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC return; } - CompletableFuture reconcileSession = this.busyReconcile = oldFuture == null ? newFuture : oldFuture; + CompletableFuture reconcileSession = oldFuture == null ? newFuture : oldFuture; // Log.debug("Reconciling BUSY"); // Avoid running in the same thread as lsp4j as it can result @@ -707,6 +711,9 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC }) .doFinally(ignore -> { reconcileSession.complete(null); + if (reconcileRequests.isEmpty()) { + busyReconcile.complete(null); + } // Log.debug("Reconciler DONE : "+this.busyReconcile.isDone()); }) .subscribe();