Skip to content

Commit 08eff3c

Browse files
fix(serial): stabilize tokio PTY e2e + scheduler
1 parent 0e75c78 commit 08eff3c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+3056
-45
lines changed

Cargo.lock

Lines changed: 148 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ironposh-async/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ uuid = "1.0"
2020
futures-timer = { version = "3", features = ["wasm-bindgen"] }
2121
web-sys = { version = "0.3.81", features = ["console"], optional = true }
2222

23+
[dev-dependencies]
24+
ironposh-client-core = { path = "../ironposh-client-core", features = ["test-helpers"] }
25+
2326
[features]
2427
default = []
2528
wasm-diag = ["web-sys"]

crates/ironposh-async/src/connection.rs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::sync::Arc;
1+
use std::{sync::Arc, time::Instant};
22

33
use anyhow::Context;
44
use futures::{SinkExt, StreamExt, channel::mpsc, join};
@@ -22,12 +22,16 @@ async fn run_handshake<C: HttpClient>(
2222
Box<ironposh_client_core::connector::active_session::ActiveSession>,
2323
ironposh_client_core::connector::conntion_pool::TrySend,
2424
)> {
25+
let handshake_started_at = Instant::now();
26+
let mut step_idx: u64 = 0;
27+
2528
let mut connector = Connector::new(config);
2629
info!("Created connector, starting connection handshake...");
2730

2831
let mut response = None;
2932

3033
loop {
34+
step_idx += 1;
3135
let step_result = connector
3236
.step(response.take())
3337
.context("Failed to step through connector");
@@ -40,23 +44,57 @@ async fn run_handshake<C: HttpClient>(
4044
}
4145
};
4246

43-
debug!(step_result = ?step_result.name(), "Processing step result");
47+
debug!(step_idx, step_result = ?step_result.name(), "Processing step result");
4448

4549
match step_result {
4650
ConnectorStepResult::SendBack { try_send } => {
51+
let send_started_at = Instant::now();
52+
let conn_id = try_send.get_connection_id().inner();
53+
info!(
54+
target: "serial",
55+
step_idx,
56+
conn_id,
57+
"handshake: sending HTTP request"
58+
);
59+
4760
match client.send_request(try_send).await {
4861
Ok(resp) => response = Some(resp),
4962
Err(e) => {
63+
let elapsed_ms = send_started_at.elapsed().as_millis() as u64;
64+
warn!(
65+
target: "serial",
66+
step_idx,
67+
conn_id,
68+
elapsed_ms,
69+
error = %e,
70+
"handshake: HTTP request failed"
71+
);
5072
let _ = session_event_tx
5173
.unbounded_send(crate::SessionEvent::Error(e.to_string()));
5274
return Err(e);
5375
}
5476
}
77+
78+
let elapsed_ms = send_started_at.elapsed().as_millis() as u64;
79+
info!(
80+
target: "serial",
81+
step_idx,
82+
conn_id,
83+
elapsed_ms,
84+
"handshake: HTTP request completed"
85+
);
5586
}
5687
ConnectorStepResult::Connected {
5788
active_session,
5889
send_this_one_async_or_you_stuck: next_receive_request,
5990
} => {
91+
let elapsed_ms = handshake_started_at.elapsed().as_millis() as u64;
92+
info!(
93+
target: "serial",
94+
step_idx,
95+
elapsed_ms,
96+
"handshake: connected"
97+
);
6098
return Ok((active_session, next_receive_request));
6199
}
62100
}

0 commit comments

Comments
 (0)