diff --git a/crates/spt-daemon/tests/inject_control_wedge.rs b/crates/spt-daemon/tests/inject_control_wedge.rs index cfd6d2c..2e69161 100644 --- a/crates/spt-daemon/tests/inject_control_wedge.rs +++ b/crates/spt-daemon/tests/inject_control_wedge.rs @@ -543,11 +543,15 @@ fn a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach() { // flood, just via the seam the real operator actually uses. // [int->REQ-HAZARD-INPUT-ACK-BACKPRESSURE] while !driver_stop.load(std::sync::atomic::Ordering::Relaxed) { - if w.send_effect_no_ack(op, &chunk).is_err() { - break; + if op <= 5000 { + // EXPERIMENT (doyle): bound the flood to fill-and-park (forkpty buf + + // FIFO), then idle — NOT an unbounded 42k-op CPU storm. + if w.send_effect_no_ack(op, &chunk).is_err() { + break; + } + driver_pumped.fetch_add(1, std::sync::atomic::Ordering::Relaxed); + op += 1; } - driver_pumped.fetch_add(1, std::sync::atomic::Ordering::Relaxed); - op += 1; // Keep the carrier healthy by draining session output; with no_ack there // is no ACK frame to read and none to self-contend on the SendHalf. let _ = w.read_event_until(Some(std::time::Instant::now() + Duration::from_millis(20)));