From 3b82f4bb2f31bb822c21d8fbb6042e5ef362ed2b Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Tue, 1 Aug 2023 10:10:53 +0200 Subject: [PATCH] GH-1056: no more duplicated symbols being produced due to disconnected removal of symbols on project initialization and change --- .../ide/vscode/boot/app/SpringSymbolIndex.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java index 41e6758a5..3354f9df2 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java @@ -365,14 +365,19 @@ public class SpringSymbolIndex implements InitializingBean, SpringIndex { return CompletableFuture.completedFuture(null); } else { - removeSymbolsByProject(project); - springIndex.removeBeans(project.getElementName()); - @SuppressWarnings("unchecked") - CompletableFuture[] futures = new CompletableFuture[this.indexers.length]; + CompletableFuture[] futures = new CompletableFuture[this.indexers.length + 1]; + + // clean future + futures[0] = CompletableFuture.runAsync(() -> { + removeSymbolsByProject(project); + springIndex.removeBeans(project.getElementName()); + }, this.updateQueue); + + // index futures for (int i = 0; i < this.indexers.length; i++) { InitializeProject initializeItem = new InitializeProject(project, this.indexers[i]); - futures[i] = CompletableFuture.runAsync(initializeItem, this.updateQueue); + futures[i + 1] = CompletableFuture.runAsync(initializeItem, this.updateQueue); } CompletableFuture future = CompletableFuture.allOf(futures);