mirror of
https://github.com/openai/codex.git
synced 2026-11-13 14:46:14 +00:00
Prewarm MCP runtime updates in the background (#35144)
## Why Changes to MCP inputs can require rebuilding the runtime before the next model step. Start that work eagerly so the step is less likely to wait for it. ## What changed - Add a per-session worker that prewarms dirty MCP state after configuration, authentication, or explicit refresh changes. - Coalesce queued refreshes and always rebuild from the latest session state, while keeping exact model-step refreshes as the correctness path. - Stop and join the worker during session shutdown. ## Testing - Verify rapid refreshes skip superseded configuration and publish the latest state. - Verify MCP-relevant policy changes mark the runtime for refresh. GitOrigin-RevId: 045ed406caff97dcbb483bc183fd16eae0c7d7ad
This commit is contained in:
1 parent
81da9deb06
commit
ef2d3edb95
9 files changed
+306
-25
No files matched your search
@@ -422,7 +422,7 @@ pub async fn dynamic_tool_response(sess: &Arc<Session>, id: String, response: Dy
|
||||
}
|
||||
|
||||
pub fn refresh_mcp_servers(sess: &Session) {
|
||||
sess.mark_mcp_runtime_dirty();
|
||||
sess.request_mcp_runtime_refresh();
|
||||
}
|
||||
|
||||
pub async fn reload_user_config(sess: &Arc<Session>) {
|
||||
@@ -585,9 +585,12 @@ async fn shutdown_session_runtime(sess: &Arc<Session>) {
|
||||
if let Err(err) = sess.services.code_mode_service.shutdown().await {
|
||||
warn!("failed to shutdown code mode session: {err}");
|
||||
}
|
||||
let _refresh = sess.mcp_refresh_lock.acquire().await;
|
||||
sess.mcp_refresh_lock.close();
|
||||
sess.services.mcp_runtime.shutdown().await;
|
||||
sess.stop_mcp_prewarm_worker().await;
|
||||
{
|
||||
let _refresh = sess.mcp_refresh_lock.acquire().await;
|
||||
sess.mcp_refresh_lock.close();
|
||||
sess.services.mcp_runtime.shutdown().await;
|
||||
}
|
||||
sess.guardian_review_session.shutdown().await;
|
||||
|
||||
crate::hook_runtime::run_session_end_hooks(sess).await;
|
||||
|
||||
Reference in new issue
Block a user