diff --git a/src/main/java/org/cryptomator/ipc/IpcCommunicator.java b/src/main/java/org/cryptomator/ipc/IpcCommunicator.java index ca5e52785..0120389c9 100644 --- a/src/main/java/org/cryptomator/ipc/IpcCommunicator.java +++ b/src/main/java/org/cryptomator/ipc/IpcCommunicator.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import java.io.Closeable; import java.io.IOException; +import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; @@ -84,4 +85,12 @@ public interface IpcCommunicator extends Closeable { */ @Override void close() throws IOException; + + default void closeUnchecked() throws UncheckedIOException { + try { + close(); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } } diff --git a/src/main/java/org/cryptomator/ipc/Server.java b/src/main/java/org/cryptomator/ipc/Server.java index 25ae2949c..e9a82c328 100644 --- a/src/main/java/org/cryptomator/ipc/Server.java +++ b/src/main/java/org/cryptomator/ipc/Server.java @@ -76,6 +76,7 @@ class Server implements IpcCommunicator { serverSocketChannel.close(); } finally { Files.deleteIfExists(socketPath); + LOG.debug("IPC server closed"); } } } diff --git a/src/main/java/org/cryptomator/launcher/Cryptomator.java b/src/main/java/org/cryptomator/launcher/Cryptomator.java index a7f10f9fc..18a748fd8 100644 --- a/src/main/java/org/cryptomator/launcher/Cryptomator.java +++ b/src/main/java/org/cryptomator/launcher/Cryptomator.java @@ -83,14 +83,7 @@ public class Cryptomator { LOG.info("Found running application instance. Shutting down..."); return 2; } else { - // TODO: move this to a better place? - shutdownHook.runOnShutdown(() -> { - try { - communicator.close(); - } catch (IOException e) { - LOG.warn("IPC cleanup failed"); - } - }); + shutdownHook.runOnShutdown(communicator::closeUnchecked); var executor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("IPC-%d").build()); var msgHandler = ipcMessageHandler.get(); msgHandler.handleLaunchArgs(List.of(args));