Extra logging to debug unexpected start/stop sequence

This commit is contained in:
aboyko
2023-04-05 20:27:58 -04:00
parent 80f8bedada
commit 8cba1851b2
4 changed files with 19 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Assert;
@@ -132,6 +133,8 @@ public class DelegatingStreamConnectionProvider implements StreamConnectionProvi
@Override
public void stop() {
BootLanguageServerPlugin.getDefault().getLog().info("DelegatingStreamConnectionProvider - Stopping Boot LS");
BootLanguageServerPlugin.getDefault().getLog().info("DelegatingStreamConnectionProvider: \n" + Arrays.stream(Thread.currentThread().getStackTrace()).map(se -> se.toString()).collect(Collectors.joining("\n")));
this.provider.stop();
if (fResourceListener != null) {
ResourcesPlugin.getWorkspace().removeResourceChangeListener(fResourceListener);

View File

@@ -16,9 +16,12 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.springframework.tooling.ls.eclipse.commons.JRE;
import org.springframework.tooling.ls.eclipse.commons.JRE.MissingJDKException;
import org.springframework.tooling.ls.eclipse.commons.LanguageServerCommonsActivator;
import org.springframework.tooling.ls.eclipse.commons.STS4LanguageServerProcessStreamConnector;
import org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants;
/**
* @author Martin Lippert
@@ -48,6 +51,14 @@ public class SpringBootLanguageServer extends STS4LanguageServerProcessStreamCon
args.add("-XX:+HeapDumpOnOutOfMemoryError");
args.add("-XX:TieredStopAtLevel=1");
if (!LanguageServerCommonsActivator.getInstance().getPreferenceStore().getBoolean(LanguageServerConsolePreferenceConstants.PREF_BOOT_JAVA_CONSOLE_ENABLED)) {
IPath logFile = BootLanguageServerPlugin.getDefault().getStateLocation().addTrailingSeparator().append("boot-ls-" + System.currentTimeMillis() + ".log");
args.add("-Dsts.log.file=" + logFile.toFile().getPath());
}
IPath fatalErrorFile = BootLanguageServerPlugin.getDefault().getStateLocation().addTrailingSeparator().append("fatal-eror-boot-ls-" + System.currentTimeMillis() + ".log");
args.add("-XX:ErrorFile=" + fatalErrorFile.toFile().getPath());
addCustomJVMArgs(args);
return args;

View File

@@ -33,12 +33,13 @@ public class Startup implements IStartup {
new BootProjectTracker(Logger.forEclipsePlugin(() -> BootLanguageServerPlugin.getDefault()),
List.of(springProjects -> {
if (!started && !springProjects.isEmpty()) {
BootLanguageServerPlugin.getDefault().getLog().info("Starting Boot LS...");
LanguageServerDefinition serverDefinition = LanguageServersRegistry.getInstance()
.getDefinition(BOOT_LS_DEFINITION_ID);
try {
LanguageServiceAccessor.startLanguageServer(serverDefinition);
BootLanguageServerPlugin.getDefault().getLog().info("Started Boot LS process");
started = true;
} catch (IOException e1) {
BootLanguageServerPlugin.getDefault().getLog().error("Failed to launch Boot Language Server", e1);

View File

@@ -40,6 +40,7 @@ public class BootProjectTracker {
@Override
public void classpathChanged(IJavaProject jp) {
logger.log("Classpath changed for project: " + jp.getElementName());
processProject(jp);
}
});
@@ -56,10 +57,12 @@ public class BootProjectTracker {
private void processProject(IJavaProject jp) {
if (isSpringProject(jp)) {
if (springProjects.add(jp)) {
logger.log("Boot project ADDED: " + jp.getElementName());
fireEvent();
}
} else {
if (springProjects.remove(jp)) {
logger.log("Boot project REMOVED: " + jp.getElementName());
fireEvent();
}
}