diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 62b9cd33d..01089d233 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "de1ac12f1c04eebc010edb4db05a4ad0aab05300", - "syncedAt": "2026-04-30T15:12:55.708Z" + "sha": "9289a502bb070c51dd86e9b3f10538398e36da54", + "syncedAt": "2026-04-30T15:32:29.061Z" } diff --git a/docs/gateway/gateway-lock.md b/docs/gateway/gateway-lock.md index 5296128df..07622b876 100644 --- a/docs/gateway/gateway-lock.md +++ b/docs/gateway/gateway-lock.md @@ -28,7 +28,7 @@ title: "Gateway lock" ## Operational notes - If the port is occupied by _another_ process, the error is the same; free the port or choose another with `openclaw gateway --port `. -- Under a service supervisor, a new gateway process that sees an existing healthy `/healthz` responder exits successfully and leaves that process in control. If the existing process never becomes healthy, retries are bounded and startup fails with a clear lock error instead of looping forever. +- Under a service supervisor, a new gateway process that sees an existing healthy `/healthz` responder leaves that process in control. On systemd, the duplicate starter exits with code 78 so the default `RestartPreventExitStatus=78` stops `Restart=always` from looping on a lock or `EADDRINUSE` conflict. If the existing process never becomes healthy, retries are bounded and startup fails with a clear lock error instead of looping forever. - The macOS app still maintains its own lightweight PID guard before spawning the gateway; the runtime lock is enforced by the lock file plus HTTP/WebSocket bind. ## Related