From 4d88e3c0f67153a5f71353353b497c12894c2f8e Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Sat, 24 Jun 2023 09:31:53 -0700 Subject: [PATCH] launch properly if previous session crashed and left lock file in place --- backend/app.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/backend/app.go b/backend/app.go index c8d785f..afcb3f0 100644 --- a/backend/app.go +++ b/backend/app.go @@ -53,11 +53,18 @@ func (a *App) VersionTag() string { func StartupApp(appName, appVersionTag, configFile, latestReleaseURL string) (*App, error) { sessionPath := configdir.LocalConfig(appName, sessionDir) if _, err := os.Stat(path.Join(sessionPath, sessionLockFile)); err == nil { - log.Println("Another instance is running. Reactivating it and exiting...") - if f, err := os.Create(path.Join(sessionPath, sessionActivateFile)); err == nil { + log.Println("Another instance is running. Reactivating it...") + reactivateFile := path.Join(sessionPath, sessionActivateFile) + if f, err := os.Create(reactivateFile); err == nil { f.Close() } - return nil, ErrAnotherInstance + time.Sleep(750 * time.Millisecond) + if _, err := os.Stat(reactivateFile); err == nil { + log.Println("No other instance responded. Starting as normal...") + os.RemoveAll(sessionPath) + } else { + return nil, ErrAnotherInstance + } } log.Printf("Starting %s...", appName)