mirror of
https://github.com/openai/codex.git
synced 2026-08-23 13:09:46 +00:00
Propagate caller metadata to rendezvous connections (#39073)
## What changed - Add `x-cluster-name` from `OPENAI_CLUSTER` and `x-openai-internal-caller` from `DD_SERVICE` to rendezvous WebSocket handshakes when the environment values are nonempty and valid HTTP header values. - Apply the rendezvous headers to both client and remote executor connections while preserving the existing W3C trace context headers. GitOrigin-RevId: fead0244ba24fa208990b92d2170a9ae76ff2ceb
This commit is contained in:
@@ -34,7 +34,7 @@ use crate::noise_relay::NoiseHarnessConnectionArgs;
|
||||
use crate::noise_relay::noise_harness_connection_from_websocket;
|
||||
use crate::noise_relay::noise_relay_websocket_config;
|
||||
use crate::relay::harness_connection_from_websocket;
|
||||
use crate::trace_context::current_trace_context_headers;
|
||||
use crate::trace_context::current_rendezvous_headers;
|
||||
|
||||
const ENVIRONMENT_CLIENT_NAME: &str = "codex-environment";
|
||||
|
||||
@@ -342,9 +342,7 @@ impl ExecServerClient {
|
||||
url: diagnostic_url.clone(),
|
||||
source,
|
||||
})?;
|
||||
request
|
||||
.headers_mut()
|
||||
.extend(current_trace_context_headers());
|
||||
request.headers_mut().extend(current_rendezvous_headers());
|
||||
let (stream, _) = timeout(
|
||||
connect_timeout,
|
||||
WebSocketConnector::new_with_tls_mode(
|
||||
|
||||
@@ -44,6 +44,7 @@ use crate::relay::HarnessKeyValidator;
|
||||
use crate::relay::run_multiplexed_environment;
|
||||
use crate::server::ConnectionProcessor;
|
||||
use crate::server::RequestDispatchMode;
|
||||
use crate::trace_context::current_rendezvous_headers;
|
||||
use crate::trace_context::current_trace_context_headers;
|
||||
|
||||
const ERROR_BODY_PREVIEW_BYTES: usize = 4096;
|
||||
@@ -673,9 +674,7 @@ async fn connect_rendezvous(
|
||||
let started_at = Instant::now();
|
||||
let result = async {
|
||||
let mut request = url.into_client_request()?;
|
||||
request
|
||||
.headers_mut()
|
||||
.extend(current_trace_context_headers());
|
||||
request.headers_mut().extend(current_rendezvous_headers());
|
||||
let connector = WebSocketConnector::new_with_tls_mode(
|
||||
http_client_factory,
|
||||
WebSocketTlsMode::TungsteniteDefault,
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
use http::HeaderMap;
|
||||
use http::HeaderValue;
|
||||
|
||||
pub(crate) fn current_rendezvous_headers() -> HeaderMap {
|
||||
let mut headers = current_trace_context_headers();
|
||||
for (header, variable) in [
|
||||
("x-cluster-name", "OPENAI_CLUSTER"),
|
||||
("x-openai-internal-caller", "DD_SERVICE"),
|
||||
] {
|
||||
if let Ok(value) = std::env::var(variable)
|
||||
&& !value.is_empty()
|
||||
&& let Ok(value) = HeaderValue::try_from(value)
|
||||
{
|
||||
headers.insert(header, value);
|
||||
}
|
||||
}
|
||||
headers
|
||||
}
|
||||
|
||||
pub(crate) fn current_trace_context_headers() -> HeaderMap {
|
||||
let mut headers = HeaderMap::new();
|
||||
let Some(trace) = codex_otel::current_span_w3c_trace_context() else {
|
||||
|
||||
Reference in New Issue
Block a user