From 16ccd5a874528ad10a697efcf060227c8a436478 Mon Sep 17 00:00:00 2001 From: Kevin Shenghui Date: Thu, 26 Feb 2026 06:56:19 -0800 Subject: [PATCH] fix(gateway): add ThrottleInterval to launchd plist to prevent restart loop --- src/daemon/launchd-plist.ts | 2 +- src/daemon/launchd.test.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/daemon/launchd-plist.ts b/src/daemon/launchd-plist.ts index e685cd9941c..b292ff45974 100644 --- a/src/daemon/launchd-plist.ts +++ b/src/daemon/launchd-plist.ts @@ -106,5 +106,5 @@ export function buildLaunchAgentPlist({ ? `\n Comment\n ${plistEscape(comment.trim())}` : ""; const envXml = renderEnvDict(environment); - return `\n\n\n \n Label\n ${plistEscape(label)}\n ${commentXml}\n RunAtLoad\n \n KeepAlive\n \n ProgramArguments\n ${argsXml}\n \n ${workingDirXml}\n StandardOutPath\n ${plistEscape(stdoutPath)}\n StandardErrorPath\n ${plistEscape(stderrPath)}${envXml}\n \n\n`; + return `\n\n\n \n Label\n ${plistEscape(label)}\n ${commentXml}\n RunAtLoad\n \n KeepAlive\n \n ThrottleInterval\n 60\n ProgramArguments\n ${argsXml}\n \n ${workingDirXml}\n StandardOutPath\n ${plistEscape(stdoutPath)}\n StandardErrorPath\n ${plistEscape(stderrPath)}${envXml}\n \n\n`; } diff --git a/src/daemon/launchd.test.ts b/src/daemon/launchd.test.ts index ac092536c5a..85c7a3350e9 100644 --- a/src/daemon/launchd.test.ts +++ b/src/daemon/launchd.test.ts @@ -198,7 +198,8 @@ describe("launchd install", () => { expect(plist).toContain("KeepAlive"); expect(plist).toContain(""); expect(plist).not.toContain("SuccessfulExit"); - expect(plist).not.toContain("ThrottleInterval"); + expect(plist).toContain("ThrottleInterval"); + expect(plist).toContain("60"); }); it("restarts LaunchAgent with bootout-bootstrap-kickstart order", async () => {