Teknium
e3275db9ae
fix(update): startup recovery resumes gateways only while holding the checkout lock (review F5-recovery-start-vs-checkout-mutation)
...
What: _resume_claimed takes the checkout lock (bounded contention wait) around the tree gate and
the verified gateway start; when an update already took the checkout after our claim, the claim
is handed back unowned and untouched, so that update or the next launch owns it.
Why: recovery judged the tree and launched gateways with no checkout custody, so a concurrent
`hermes update` could mutate the checkout under freshly started gateways (the updater skips a
live claim and may discover no running gateway to pause).
Red: pre-fix update_pause_record.py -> "gateways restarted while an update owned the checkout: resume ['default']".
Green: test_recovery_never_starts_gateways_under_an_update_that_took_the_checkout passes (set resumed by the next launch).
2026-10-06 06:18:39 -07:00
..
2026-10-06 00:40:30 -07:00
2026-10-06 05:50:08 -07:00
2026-10-06 05:17:45 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 03:44:49 -07:00
2026-10-05 15:36:14 -07:00
2026-10-05 23:33:41 -07:00
2026-10-05 15:36:14 -07:00
2026-10-05 15:36:14 -07:00
2026-10-05 22:38:27 -05:00
2026-10-05 16:41:47 -05:00
2026-10-05 23:33:41 -07:00
2026-10-05 15:36:14 -07:00
2026-10-05 17:34:36 -07:00
2026-10-06 05:50:08 -07:00
2026-10-05 16:42:43 -05:00
2026-10-06 02:53:00 -07:00
2026-10-06 03:44:49 -07:00
2026-10-05 16:37:14 -05:00
2026-10-06 05:50:08 -07:00
2026-10-05 16:37:28 -05:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-05 23:33:41 -07:00
2026-10-06 03:44:49 -07:00
2026-10-05 16:00:48 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 05:44:21 -07:00
2026-10-06 05:44:21 -07:00
2026-10-06 04:36:02 -07:00
2026-10-05 23:33:41 -07:00
2026-10-06 06:18:39 -07:00
2026-10-05 16:06:32 -07:00
2026-10-05 23:33:41 -07:00
2026-10-05 16:41:47 -05:00
2026-10-06 08:13:51 -04:00
2026-10-05 16:41:47 -05:00
2026-10-05 23:33:41 -07:00
2026-10-06 02:53:56 -07:00
2026-10-05 17:24:40 -07:00
2026-10-05 16:06:32 -07:00
2026-10-05 17:20:30 -07:00
2026-10-05 17:34:36 -07:00
2026-10-05 17:20:30 -07:00
2026-10-05 17:11:30 -07:00
2026-10-05 17:34:36 -07:00
2026-10-05 17:20:30 -07:00
2026-10-05 17:34:36 -07:00
2026-10-05 16:41:08 -05:00
2026-10-05 23:33:41 -07:00
2026-10-05 16:42:57 -05:00
2026-10-06 08:13:51 -04:00
2026-10-05 23:33:41 -07:00
2026-10-05 22:07:41 -07:00
2026-10-05 16:00:48 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:15:29 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 06:18:39 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 04:36:02 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 06:18:39 -07:00
2026-10-06 06:18:39 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 03:44:49 -07:00
2026-10-06 04:36:02 -07:00
2026-10-05 17:24:40 -07:00
2026-10-06 03:44:49 -07:00
2026-10-05 15:36:14 -07:00
2026-10-06 04:36:02 -07:00
2026-10-05 16:41:08 -05:00