mirror of
https://github.com/openai/codex.git
synced 2026-11-09 08:40:33 +00:00
Prewarm code-mode host connections at session startup (#40678)
## What changed - Add the opt-in `code_mode_prewarm` feature to establish the code-mode host session during startup, before the first turn. - Make in-progress host initialization cancellable so a stalled prewarm does not block shutdown. - Share a failed connection attempt with concurrent callers instead of immediately starting another attempt. ## Testing - Verify app-server contacts the configured host before the first turn and can shut down while that connection is stalled. - Exercise shared remote-host behavior with prewarming enabled. GitOrigin-RevId: 3cfde5509be7b4aba80112c36c5616b9a9b632c6
This commit is contained in:
1 parent
17c4c47dfa
commit
4b24638e1c
6 files changed
+105
-14
No files matched your search
@@ -34,6 +34,35 @@ async fn app_server_shares_flag_selected_grpc_code_mode_host_across_threads() ->
|
||||
assert_shared_remote_code_mode_host("grpc://127.0.0.1:0").await
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn app_server_prewarms_flag_selected_code_mode_host_before_first_turn() -> Result<()> {
|
||||
let model_server = responses::start_mock_server().await;
|
||||
let codex_home = TempDir::new()?;
|
||||
MockResponsesConfig::new(&model_server.uri())
|
||||
.enable_feature(Feature::CodeModePrewarm)
|
||||
.write(codex_home.path())?;
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await?;
|
||||
let host_url = format!("ws://{}", listener.local_addr()?);
|
||||
let mut app_server = TestAppServer::builder()
|
||||
.with_codex_home(codex_home.path())
|
||||
.with_args(&["--code-mode-host", &host_url])
|
||||
.build_initialized_with_timeout(DEFAULT_READ_TIMEOUT)
|
||||
.await?;
|
||||
app_server
|
||||
.start_thread(ThreadStartParams::default())
|
||||
.await?;
|
||||
|
||||
let (_stalled_connection, _) = timeout(DEFAULT_READ_TIMEOUT, listener.accept())
|
||||
.await
|
||||
.context("code-mode host was not contacted before the first turn")??;
|
||||
let status = timeout(Duration::from_secs(5), app_server.shutdown_gracefully())
|
||||
.await
|
||||
.context("stalled code-mode prewarm blocked thread shutdown")??;
|
||||
assert!(status.success(), "app-server did not exit successfully");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn assert_shared_remote_code_mode_host(listen_url: &str) -> Result<()> {
|
||||
let host_program = codex_utils_cargo_bin::cargo_bin("codex-code-mode-host")?;
|
||||
let mut code_mode_host = Command::new(host_program)
|
||||
@@ -91,6 +120,7 @@ async fn assert_shared_remote_code_mode_host(listen_url: &str) -> Result<()> {
|
||||
let codex_home = TempDir::new()?;
|
||||
MockResponsesConfig::new(&model_server.uri())
|
||||
.enable_feature(Feature::CodeModeOnly)
|
||||
.enable_feature(Feature::CodeModePrewarm)
|
||||
.write(codex_home.path())?;
|
||||
let original_config = std::fs::read_to_string(codex_home.path().join("config.toml"))?;
|
||||
let mut app_server = TestAppServer::builder()
|
||||
|
||||
Reference in new issue
Block a user