jif-oai
fcc2a92743
fix: emit thread stop lifecycle on implicit shutdown ( #22482 )
...
## Why
The thread lifecycle contributor hooks from #22476 should observe every
session teardown. The explicit `Op::Shutdown` path already emitted
`on_thread_stop`, but when `submission_loop` exited because its
submission channel closed, it only tore down runtime services. That
meant extensions could miss the thread-stop lifecycle signal on implicit
runtime shutdown.
## What Changed
- Split shared runtime teardown into `shutdown_runtime_services(...)`.
- Split thread-stop lifecycle emission into
`emit_thread_stop_lifecycle(...)`.
- Reused those helpers from both explicit shutdown and the channel-close
shutdown path.
- Tracked whether `Op::Shutdown` was received so the explicit path does
not double-emit lifecycle events after it exits the loop.
- Added a regression test that closes the submission channel and asserts
`ThreadLifecycleContributor::on_thread_stop` runs once with the expected
thread/session stores.
## Testing
- `cargo test -p codex-core
submission_loop_channel_close_emits_thread_stop_lifecycle`
2026-05-13 14:19:57 +02:00
..
2026-05-12 17:22:25 -07:00
2026-04-21 10:22:36 -07:00
2026-04-07 00:32:41 +00:00
2026-05-13 07:13:57 +00:00
2026-05-11 19:51:51 -07:00
2026-05-12 15:50:10 -07:00
2026-05-13 01:55:46 +00:00
2026-05-07 10:16:10 -07:00
2026-04-26 22:11:49 -07:00
2026-05-13 14:19:57 +02:00
2026-05-13 13:47:27 +02:00
2026-05-13 13:47:27 +02:00
2026-05-13 12:12:06 +02:00
2026-05-12 08:41:00 -07:00
2026-03-24 18:10:53 -07:00
2026-04-24 17:49:29 -07:00
2026-04-26 15:10:53 -07:00
2026-04-07 21:20:22 +00:00
2026-05-11 16:33:44 -07:00
2026-05-01 22:11:06 +00:00
2026-05-04 14:15:01 +02:00
2026-05-08 12:36:02 -07:00
2026-04-21 15:37:12 -07:00
2026-04-27 21:58:29 +00:00
2026-05-08 12:36:02 -07:00
2026-05-13 03:08:01 +00:00
2026-05-07 20:31:41 -07:00
2026-05-11 11:38:18 +02:00
2026-05-13 13:11:30 +02:00
2026-03-12 08:16:36 -07:00
2026-04-01 23:06:24 -07:00
2026-05-07 19:57:36 -07:00
2026-05-11 19:51:51 -07:00
2026-05-11 19:51:51 -07:00
2026-05-11 19:33:15 +03:00
2026-05-01 17:46:02 +02:00
2026-05-12 00:11:31 +00:00
2026-05-11 12:23:55 -07:00
2026-03-12 00:35:21 -07:00
2026-05-08 15:30:00 -07:00
2026-05-11 09:51:21 -07:00
2026-04-20 22:39:17 -07:00
2026-04-26 15:10:53 -07:00
2026-04-26 15:10:53 -07:00
2026-05-11 11:49:44 -07:00
2026-05-01 00:56:20 +00:00
2026-05-11 11:37:53 -07:00
2026-05-11 23:04:28 -07:00
2026-05-11 23:04:28 -07:00
2026-05-13 11:31:27 +02:00
2026-04-17 00:51:21 +00:00
2026-05-11 10:49:19 -07:00
2026-05-12 19:05:10 -07:00
2026-04-28 13:03:28 +02:00
2026-04-28 19:43:44 -07:00
2026-05-12 23:30:13 -07:00
2026-04-23 17:14:02 -07:00
2026-05-07 10:36:32 +02:00
2026-03-27 19:00:44 -07:00
2026-05-12 19:05:10 -07:00
2026-05-07 10:16:10 -07:00
2026-05-12 00:11:31 +00:00
2026-05-07 10:16:10 -07:00
2026-05-07 10:36:32 +02:00
2026-05-08 12:17:48 -07:00
2026-03-25 11:05:35 -07:00
2026-04-02 23:00:02 -07:00
2026-04-09 10:53:06 -07:00
2026-03-27 19:00:44 -07:00
2026-04-27 03:18:57 +00:00
2026-04-24 17:49:29 -07:00
2026-05-11 11:32:40 -07:00
2026-05-06 22:48:29 -07:00
2026-05-06 22:48:29 -07:00
2026-05-11 11:38:18 +02:00
2026-05-06 02:12:31 +00:00
2026-04-23 10:17:09 -07:00
2026-04-20 14:04:09 -07:00
2026-05-04 22:28:14 +00:00
2026-04-16 14:30:57 -07:00
2026-04-01 23:06:24 -07:00
2026-04-14 14:26:10 -07:00
2026-05-05 15:25:19 -07:00
2026-04-27 13:41:27 -07:00
2026-05-07 11:33:47 +02:00
2026-04-26 13:29:54 -07:00
2026-04-26 13:29:54 -07:00
2026-04-20 22:39:17 -07:00
2026-04-03 00:33:34 -07:00
2026-05-11 23:58:36 +00:00
2026-02-10 17:03:46 -08:00
2026-05-04 11:46:03 -07:00
2026-05-04 11:46:03 -07:00
2026-03-27 19:00:44 -07:00
2026-04-02 13:47:10 -07:00
2026-05-04 20:36:29 -07:00
2026-04-14 14:26:10 -07:00
2026-05-04 11:46:03 -07:00
2026-04-26 17:18:09 -07:00
2026-05-12 00:11:31 +00:00
2026-05-06 22:48:29 -07:00
2026-05-11 11:38:18 +02:00
2026-05-13 13:11:30 +02:00
2026-04-26 17:18:09 -07:00
2026-04-13 23:11:49 -07:00
2026-05-07 18:05:45 +02:00
2026-05-07 18:05:45 +02:00
2026-05-06 11:36:15 +02:00
2026-05-06 11:36:15 +02:00
2026-04-28 16:36:59 +00:00
2026-05-11 23:58:36 +00:00
2026-04-20 22:39:17 -07:00
2026-04-20 22:39:17 -07:00
2026-04-20 10:27:01 -07:00
2026-04-03 00:33:34 -07:00
2026-01-30 16:37:56 -08:00
2026-04-01 23:06:24 -07:00
2026-04-01 23:06:24 -07:00
2026-04-08 08:42:18 -07:00
2026-04-08 08:42:18 -07:00