Skip to content

Commit 40e0dc9

Browse files
committed
Shut down child processes on exit.
1 parent 0f43434 commit 40e0dc9

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/LanguageServerRouter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@
3535
import java.net.InetAddress;
3636
import java.net.Socket;
3737
import java.net.URI;
38+
import java.util.Collection;
3839
import java.util.HashSet;
3940
import java.util.List;
4041
import java.util.Map;
4142
import java.util.Optional;
4243
import java.util.concurrent.CancellationException;
4344
import java.util.concurrent.CompletableFuture;
4445
import java.util.concurrent.ConcurrentHashMap;
46+
import java.util.concurrent.CopyOnWriteArrayList;
4547
import java.util.concurrent.ExecutionException;
4648
import java.util.concurrent.ExecutorService;
4749
import java.util.concurrent.Future;
@@ -87,6 +89,7 @@ public class LanguageServerRouter extends BaseLanguageServer.ActualLanguageServe
8789

8890
private final Map<String, String> languagesByExtension;
8991
private final Map<String, CompletableFuture<IBaseLanguageServerExtensions>> languageServers;
92+
private final Collection<Process> delegateProcesses = new CopyOnWriteArrayList<>();
9093

9194
private @MonotonicNonNull InitializeParams initializeParams;
9295

@@ -98,6 +101,9 @@ public LanguageServerRouter(Runnable onExit, ExecutorService exec) {
98101

99102
this.languagesByExtension = new ConcurrentHashMap<>();
100103
this.languageServers = new ConcurrentHashMap<>();
104+
105+
// Shutdown child processes when we exit
106+
Runtime.getRuntime().addShutdownHook(new Thread(() -> delegateProcesses.forEach(Process::destroy)));
101107
}
102108

103109
/*package*/ public CompletableFuture<IBaseLanguageServerExtensions> languageByName(String lang) {

0 commit comments

Comments
 (0)