fix(server): reclaim abandoned daemon locks

The supervisor now keeps the pid lock fresh while it owns it. Startup still respects a live PID with a fresh lock, but can reclaim a lock whose owner PID is alive without refreshing it.
This commit is contained in:
Mohamed Boudra
2026-07-15 14:37:50 +02:00
parent 4a5630bfce
commit fb4a686ba0
3 changed files with 141 additions and 21 deletions
@@ -5,6 +5,7 @@ import {
acquirePidLock,
PidLockError,
releasePidLock,
startPidLockHeartbeat,
updatePidLock,
} from "../src/server/pid-lock.js";
import { resolvePaseoHome } from "../src/server/paseo-home.js";
@@ -120,11 +121,15 @@ async function main(): Promise<void> {
}
let lockReleased = false;
const stopLockHeartbeat = startPidLockHeartbeat(paseoHome, {
ownerPid: process.pid,
});
const releaseLock = async (): Promise<void> => {
if (lockReleased) {
return;
}
lockReleased = true;
stopLockHeartbeat();
await releasePidLock(paseoHome, {
ownerPid: process.pid,
});