From 42f31c4af745f9a286e945ff4a27b08afb4d12a5 Mon Sep 17 00:00:00 2001 From: Kevin Ingersoll Date: Fri, 8 Mar 2024 15:25:16 +0000 Subject: [PATCH 1/2] stop anvil with sigkill --- packages/anvil.js/src/anvil/createAnvil.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/anvil.js/src/anvil/createAnvil.ts b/packages/anvil.js/src/anvil/createAnvil.ts index b2c18a7..cd149e5 100644 --- a/packages/anvil.js/src/anvil/createAnvil.ts +++ b/packages/anvil.js/src/anvil/createAnvil.ts @@ -437,6 +437,7 @@ export function createAnvil(options: CreateAnvilOptions = {}): Anvil { const { execa } = await import("execa"); anvil = execa(anvilBinary, toArgs(anvilOptions), { signal: controller.signal, + killSignal: 'SIGKILL', cleanup: true, }); From cd96aee6b0e06a715b96b31c54de927116200e01 Mon Sep 17 00:00:00 2001 From: Kevin Ingersoll Date: Fri, 8 Mar 2024 15:35:05 +0000 Subject: [PATCH 2/2] sigkill after timeout --- packages/anvil.js/src/anvil/createAnvil.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/anvil.js/src/anvil/createAnvil.ts b/packages/anvil.js/src/anvil/createAnvil.ts index cd149e5..75960a1 100644 --- a/packages/anvil.js/src/anvil/createAnvil.ts +++ b/packages/anvil.js/src/anvil/createAnvil.ts @@ -437,7 +437,6 @@ export function createAnvil(options: CreateAnvilOptions = {}): Anvil { const { execa } = await import("execa"); anvil = execa(anvilBinary, toArgs(anvilOptions), { signal: controller.signal, - killSignal: 'SIGKILL', cleanup: true, }); @@ -460,7 +459,11 @@ export function createAnvil(options: CreateAnvilOptions = {}): Anvil { const timeout = new Promise((_, reject) => { setTimeout(() => { - reject(new Error("Anvil failed to stop in time")); + if (anvil?.kill('SIGKILL')) { + reject(new Error("Anvil failed to gracefully stop in time, killed forcefully")); + } else { + reject(new Error("Anvil failed to gracefully stop in time, but could not kill forcefully")); + } }, stopTimeout); });