From 297e7ff21cdae42a269c6cd244a433c248a778fd Mon Sep 17 00:00:00 2001 From: Ahmed Abushagur Date: Sun, 1 Mar 2026 22:37:57 -0800 Subject: [PATCH] fix(sprite): add 60s timeout to destroyServer to prevent hanging (#2096) The sprite destroy command can hang indefinitely when the Sprite API is unresponsive. Add a 60s timeout using the existing killWithTimeout utility (same pattern as runSprite). Co-authored-by: Claude Opus 4.6 Co-authored-by: L <6723574+louisgv@users.noreply.github.com> Co-authored-by: A <258483684+la14-1@users.noreply.github.com> --- packages/cli/src/sprite/sprite.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/cli/src/sprite/sprite.ts b/packages/cli/src/sprite/sprite.ts index 64702583..cb49a3b8 100644 --- a/packages/cli/src/sprite/sprite.ts +++ b/packages/cli/src/sprite/sprite.ts @@ -642,7 +642,10 @@ export async function destroyServer(name?: string): Promise { ); // Drain stderr before awaiting exit to prevent pipe buffer deadlock const stderrText = new Response(proc.stderr).text(); + // 60s timeout — sprite destroy should not hang indefinitely + const timer = setTimeout(() => killWithTimeout(proc), 60_000); const exitCode = await proc.exited; + clearTimeout(timer); if (exitCode !== 0) { logError(`Failed to destroy sprite '${target}'`); logError(`Delete it manually: sprite destroy ${target}`);