From 9c74b641ed30be8b3ae87da48e0da3c6becb3ac6 Mon Sep 17 00:00:00 2001 From: aboyko Date: Sun, 16 Mar 2025 14:10:23 -0400 Subject: [PATCH] Comments --- .../ide/vscode/boot/jdt/ls/JdtLsProjectCache.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java index cf9e1e406..ee2879f6a 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java @@ -338,6 +338,9 @@ public class JdtLsProjectCache implements InitializableJavaProjectsService, Serv private class JstLsClasspathListener implements ClasspathListener { + /* + * Synchronize to make non-reentrant such that events handled in predictable order + */ @Override public synchronized void changed(Event event) { log.debug("claspath event received {}", event); @@ -351,6 +354,7 @@ public class JdtLsProjectCache implements InitializableJavaProjectsService, Serv synchronized (table) { deleted = table.remove(uri); } + // Notify outside of the lock if (deleted!=null) { log.debug("removed from table = true"); notifyDelete(deleted); @@ -375,6 +379,7 @@ public class JdtLsProjectCache implements InitializableJavaProjectsService, Serv : new JdtLsJavaProject(server.getClient(), projectUri, classpath, JdtLsProjectCache.this, projectBuild); table.put(uri, newProject); } + // Notify outside of the lock if (oldProject != null) { notifyChanged(newProject); } else {