archipelago
2dad64b2ee
fix(stop): honour per-app graceful-stop grace in orchestrator stop path
package.stop left slow-to-SIGTERM apps (fedimint/electrumx/bitcoin/btcpay/immich)
running: the orchestrator path hardcoded podman API ?t=10 / CLI -t 30 and the CLI
wrapper deadline (30s) equalled the -t grace, so the await fired exactly as podman
SIGKILLed -> stop reported failed -> state reverted to running. Reproduced live on
clean .198 (fedimint).
- container/runtime.rs: add ContainerRuntime::stop_container_with_grace (defaulted
so mock/dev impls are unchanged); PodmanRuntime honours grace for API + CLI with
deadline = grace + 15s buffer; AutoRuntime delegates. New canonical per-app table
stop_grace_secs_for() + DEFAULT_STOP_GRACE_SECS / STOP_GRACE_DEADLINE_BUFFER_SECS.
- podman_client.rs: stop_container_with_grace uses ?t=<grace> + longer HTTP deadline.
- prod_orchestrator::stop: resolve grace = manifest stop_grace_secs (north-star) else
the table; pass to quadlet::stop_service_with_timeout AND stop_container_with_grace.
- quadlet.rs: stop_service_with_timeout so slow apps aren't SIGKILLed at 45s.
- rpc/package/runtime.rs: doc-note its &str stop_timeout_secs mirrors the canonical table.
- tests: resolve_stop_grace_secs (manifest field wins / table fallback / default 30).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 06:59:40 -04:00
..
2026-06-22 06:59:40 -04:00
2026-04-18 17:23:46 -04:00
2026-06-22 06:59:40 -04:00
2026-04-23 13:02:28 -04:00
2026-06-19 09:52:26 -04:00
2026-06-20 18:58:52 -04:00
2026-06-20 08:01:14 -04:00
2026-06-12 03:00:15 -04:00
2026-04-28 15:00:58 -04:00
2026-04-28 15:00:58 -04:00
2026-04-18 17:23:46 -04:00
2026-06-17 19:50:46 -04:00
2026-04-23 12:29:10 -04:00
2026-06-17 19:50:46 -04:00
2026-06-21 05:11:07 -04:00
2026-06-11 00:24:32 -04:00
2026-04-28 15:00:58 -04:00
2026-04-18 17:23:46 -04:00
2026-06-19 09:52:26 -04:00
2026-06-16 13:05:27 -04:00
2026-06-17 03:10:21 -04:00
2026-06-17 19:50:46 -04:00
2026-03-14 05:55:03 +00:00
2026-06-17 04:47:18 -04:00
2026-04-18 17:23:46 -04:00
2026-06-16 13:05:27 -04:00
2026-06-17 19:21:07 -04:00
2026-06-20 18:58:52 -04:00
2026-06-17 19:21:07 -04:00
2026-06-11 01:16:21 -04:00
2026-04-29 14:50:33 -04:00
2026-04-18 17:23:46 -04:00
2026-06-11 00:24:32 -04:00
2026-06-17 06:33:04 -04:00
2026-04-28 15:00:58 -04:00
2026-04-20 16:40:25 -04:00
2026-06-21 08:23:19 -04:00
2026-04-18 17:23:46 -04:00
2026-04-18 17:23:46 -04:00
2026-06-17 19:21:07 -04:00
2026-06-17 04:47:18 -04:00
2026-04-19 02:28:16 -04:00
2026-04-18 17:23:46 -04:00
2026-04-19 04:02:15 -04:00
2026-06-17 19:50:46 -04:00
2026-05-17 23:15:07 -04:00
2026-06-16 12:40:57 -04:00
2026-06-19 09:52:26 -04:00
2026-04-28 15:00:58 -04:00
2026-04-18 17:23:46 -04:00
2026-06-16 08:54:37 -04:00
2026-04-18 17:23:46 -04:00
2026-03-14 05:57:32 +00:00
2026-06-17 19:21:07 -04:00
2026-04-20 07:10:49 -04:00
2026-04-18 17:23:46 -04:00