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);