Add client syslog events, fix client UDP TX error threshold
All checks were successful
CI / test (push) Successful in 1m26s
All checks were successful
CI / test (push) Successful in 1m26s
- Client mode now emits TEST_START and TEST_END syslog events - Client UDP TX threshold raised from 1000 to 50000 with adaptive backoff (matching server behavior) — prevents premature TX death on macOS - Updated all docs (README, user-guide, architecture, protocol, docker) - Added results.csv to gitignore Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -289,13 +289,19 @@ async fn udp_client_tx_loop(
|
||||
state.tx_bytes.fetch_add(n as u64, Ordering::Relaxed);
|
||||
consecutive_errors = 0;
|
||||
}
|
||||
Err(_) => {
|
||||
Err(e) => {
|
||||
consecutive_errors += 1;
|
||||
if consecutive_errors > 1000 {
|
||||
if consecutive_errors == 1 {
|
||||
tracing::debug!("UDP TX send error: {} (target)", e);
|
||||
}
|
||||
if consecutive_errors > 50000 {
|
||||
tracing::warn!("UDP TX: too many consecutive send errors, stopping");
|
||||
break;
|
||||
}
|
||||
tokio::time::sleep(Duration::from_micros(200)).await;
|
||||
let backoff = Duration::from_micros(
|
||||
(200 + consecutive_errors.min(5000) as u64 * 10).min(10000)
|
||||
);
|
||||
tokio::time::sleep(backoff).await;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
10
src/main.rs
10
src/main.rs
@@ -172,6 +172,9 @@ async fn main() -> anyhow::Result<()> {
|
||||
};
|
||||
let proto_str = if cli.udp { "UDP" } else { "TCP" };
|
||||
|
||||
// Log test start
|
||||
syslog_logger::test_start(&host, proto_str, dir_str, 0);
|
||||
|
||||
// Run client with optional duration timeout
|
||||
let start = std::time::Instant::now();
|
||||
let client_fut = client::run_client(
|
||||
@@ -204,10 +207,15 @@ async fn main() -> anyhow::Result<()> {
|
||||
|
||||
let elapsed = start.elapsed().as_secs();
|
||||
|
||||
// Log test end to syslog
|
||||
syslog_logger::test_end(
|
||||
&host, proto_str, dir_str,
|
||||
0, 0, 0, elapsed as u32,
|
||||
);
|
||||
|
||||
// Write CSV if enabled
|
||||
if csv_output::is_enabled() {
|
||||
let auth_type = if cli.auth_user.is_some() { "auth" } else { "none" };
|
||||
// For client mode we don't track detailed stats yet, but duration is useful
|
||||
csv_output::write_result(
|
||||
&host, cli.port, proto_str, dir_str,
|
||||
elapsed, 0, 0, 0, auth_type,
|
||||
|
||||
Reference in New Issue
Block a user