From fcf4916086af5d63b779f2333a3f0d2ffa3825af Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Tue, 12 Aug 2025 18:44:57 +0200 Subject: [PATCH] fix: allow upgrade without config dir (fixes #10240) (#10241) --- cmd/syncthing/main.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index fa2dd1975..7043b7d2c 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -868,12 +868,16 @@ func (u upgradeCmd) Run() error { lf := flock.New(locations.Get(locations.LockFile)) var locked bool locked, err = lf.TryLock() - if err != nil { + // ErrNotExist is a valid error if this is a new/blank installation + // without a config dir, in which case we can proceed with a normal + // non-API upgrade. + switch { + case err != nil && !os.IsNotExist(err): slog.Error("Failed to lock for upgrade", slogutil.Error(err)) os.Exit(1) - } else if locked { + case locked: err = upgradeViaRest() - } else { + default: err = upgrade.To(release) } }