From 0fad93524e3a234372c9de2f7af0bc970a3e94a7 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Thu, 28 Mar 2024 10:56:37 +0200 Subject: [PATCH] delete existing instance lock file and recreate if client connection fails --- .../com/sparrowwallet/sparrow/instance/Instance.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/instance/Instance.java b/src/main/java/com/sparrowwallet/sparrow/instance/Instance.java index 9247df6b..b667952d 100644 --- a/src/main/java/com/sparrowwallet/sparrow/instance/Instance.java +++ b/src/main/java/com/sparrowwallet/sparrow/instance/Instance.java @@ -5,6 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.net.ConnectException; import java.net.SocketException; import java.net.StandardProtocolFamily; import java.net.UnixDomainSocketAddress; @@ -48,7 +49,6 @@ public abstract class Instance { if(!Files.exists(lockFile)) { startServer(lockFile); - createSymlink(lockFile); } else { doClient(lockFile); } @@ -102,6 +102,8 @@ public abstract class Instance { thread.setDaemon(true); thread.setName("SparrowInstanceListener"); thread.start(); + + createSymlink(lockFile); } private void doClient(Path lockFile) throws InstanceException { @@ -115,6 +117,13 @@ public abstract class Instance { beforeExit(); System.exit(0); } + } catch(ConnectException e) { + try { + Files.deleteIfExists(lockFile); + startServer(lockFile); + } catch(IOException ex) { + throw new InstanceException("Could not delete lock file from previous instance", e); + } } catch(Exception e) { throw new InstanceException("Could not open client connection to existing instance", e); }