Skip to content

Commit be475a5

Browse files
committed
remove unreachable!(), improve panic messages, fix tautological test
1 parent c2deb1c commit be475a5

5 files changed

Lines changed: 18 additions & 15 deletions

File tree

src/agent-client-protocol-conductor/src/conductor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ where
739739
client: ConnectionTo<Host::Counterpart>,
740740
proxy_components: Vec<DynConnectTo<Conductor>>,
741741
) -> Result<(), agent_client_protocol::Error> {
742-
assert!(self.proxies.is_empty());
742+
debug_assert!(self.proxies.is_empty());
743743

744744
let num_proxies = proxy_components.len();
745745
info!(proxy_count = num_proxies, "spawn_proxies");

src/agent-client-protocol-conductor/src/mcp_bridge.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,28 +95,31 @@ pub async fn run_mcp_bridge(port: u16) -> Result<(), agent_client_protocol::Erro
9595
async fn connect_with_retry(port: u16) -> Result<TcpStream, agent_client_protocol::Error> {
9696
let max_retries = 10;
9797
let mut retry_delay_ms = 50;
98+
let mut last_error = None;
9899

99100
for attempt in 1..=max_retries {
100101
match TcpStream::connect(format!("127.0.0.1:{port}")).await {
101102
Ok(stream) => {
102103
tracing::info!("Connected to localhost:{} on attempt {}", port, attempt);
103104
return Ok(stream);
104105
}
105-
Err(e) if attempt < max_retries => {
106+
Err(e) => {
106107
tracing::debug!(
107108
"Connection attempt {} failed: {}, retrying in {}ms",
108109
attempt,
109110
e,
110111
retry_delay_ms
111112
);
112-
tokio::time::sleep(tokio::time::Duration::from_millis(retry_delay_ms)).await;
113-
retry_delay_ms = (retry_delay_ms * 2).min(1000); // Exponential backoff, max 1s
114-
}
115-
Err(e) => {
116-
return Err(agent_client_protocol::Error::into_internal_error(e));
113+
last_error = Some(e);
114+
if attempt < max_retries {
115+
tokio::time::sleep(tokio::time::Duration::from_millis(retry_delay_ms)).await;
116+
retry_delay_ms = (retry_delay_ms * 2).min(1000);
117+
}
117118
}
118119
}
119120
}
120121

121-
unreachable!()
122+
Err(agent_client_protocol::Error::into_internal_error(
123+
last_error.expect("loop ran at least once"),
124+
))
122125
}

src/agent-client-protocol-trace-viewer/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ pub struct TraceHandle {
3636
impl TraceHandle {
3737
/// Push a new event to the trace.
3838
pub fn push(&self, event: serde_json::Value) {
39-
self.events.lock().unwrap().push(event);
39+
self.events.lock().expect("events mutex poisoned").push(event);
4040
}
4141

4242
/// Get the current number of events.
4343
#[must_use]
4444
pub fn len(&self) -> usize {
45-
self.events.lock().unwrap().len()
45+
self.events.lock().expect("events mutex poisoned").len()
4646
}
4747

4848
/// Check if empty.
4949
#[must_use]
5050
pub fn is_empty(&self) -> bool {
51-
self.events.lock().unwrap().is_empty()
51+
self.events.lock().expect("events mutex poisoned").is_empty()
5252
}
5353
}
5454

@@ -192,7 +192,7 @@ async fn serve_events_from_file(path: &PathBuf) -> Response {
192192
}
193193

194194
fn serve_events_from_memory(events: &Arc<Mutex<Vec<serde_json::Value>>>) -> Response {
195-
let events = events.lock().unwrap();
195+
let events = events.lock().expect("events mutex poisoned");
196196
match serde_json::to_string(&*events) {
197197
Ok(json) => (StatusCode::OK, [("content-type", "application/json")], json).into_response(),
198198
Err(e) => (

src/agent-client-protocol/examples/simple_agent.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async fn main() -> Result<()> {
2020
.on_receive_dispatch(
2121
async move |message: Dispatch, cx: ConnectionTo<Client>| {
2222
// Respond to any other message with an error
23-
message.respond_with_error(agent_client_protocol::util::internal_error("TODO"), cx)
23+
message.respond_with_error(agent_client_protocol::util::internal_error("unhandled message"), cx)
2424
},
2525
agent_client_protocol::on_receive_dispatch!(),
2626
)

src/agent-client-protocol/tests/jsonrpc_error_handling.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ async fn test_incomplete_line() {
219219
// The server should handle EOF mid-message gracefully
220220
let result = connection.connect_to(transport).await;
221221

222-
// Server should terminate cleanly when hitting EOF
223-
assert!(result.is_ok() || result.is_err());
222+
// Server should terminate cleanly (not hang) when EOF is hit mid-message
223+
assert!(result.is_ok(), "expected clean shutdown on EOF, got: {result:?}");
224224
}
225225

226226
// ============================================================================

0 commit comments

Comments
 (0)