vectordotdev/vector · error
should not fail to send output event
Error message
should not fail to send output event
What it means
The validation output HTTP server collects the events a component emitted and forwards them to the test harness via an mpsc `output_tx.send(...).await`, expecting the receiving half to still be alive. A panic here means the channel receiver was dropped while the HTTP server was still delivering results — the harness shut down unexpectedly.
Solutions
- Check the validation run logs for an earlier harness panic/timeout that shut the receiver down early
- Ensure the component under test stops sending output before the test concludes (no trailing async emits)
- Increase test timeouts if the component's output delivery races with harness shutdown
- Update Vector and report if reproducible
Defensive patterns
Strategy: try-catch
Try / catch
// On the harness side, keep the receiver alive for the whole server lifetime
// and tolerate late sends:
while let Some(events) = output_rx.recv().await {
if harness_active { record(events); }
} Prevention
- Don't drop the output channel receiver while the HTTP server is running
- Ensure components finish emitting before test teardown
- Use adequate test timeouts so teardown doesn't race deliveries
When it happens
Trigger: `spawn_output_http_server` processing a component's POST of output events, then trying to send the events over the internal channel after the harness's receiver was dropped (test completed/aborted or panicked concurrently).
Common situations: The component under test sends output after the validation run finished; a crash/timeout elsewhere in the harness dropped the receiver first; test-case timing issues causing late deliveries.
Related errors
- Failed to bind to listen address.
- not implemented
- should not fail to build request
- should not fail to convert method to method filter
- a valid HTTP/1 URI is valid as an HTTP URI
AI-assisted analysis of vectordotdev/vector@bdb87aeaa4 (2026-09-16).
Data as JSON: /api/errors/63b636f5856ef1e3.
Report an issue: GitHub.
Appendix: source
Thrown at src/components/validation/resources/http.rs:387
// Update the runner metrics for the received events. This will later
// be used in the Validators, as the "expected" case.
output_runner_metrics.received_bytes_total +=
byte_size as u64;
output_runner_metrics.received_events_total +=
events.len() as u64;
events.iter().for_each(|event| {
output_runner_metrics.received_event_bytes_total +=
event.estimated_json_encoded_size_of().get()
as u64;
});
output_tx
.send(events.to_vec())
.await
.expect("should not fail to send output event");
}
}
Ok(None) => {
if should_reject {
// This status code is not retried and should result in the component under test
// emitting error events
return StatusCode::BAD_REQUEST.into_response();
} else {
return StatusCode::OK.into_response();
}
}
Err(_) => {
error!(
"HTTP server failed to decode body: {:?}",
String::from_utf8_lossy(&body)
);
return StatusCode::INTERNAL_SERVER_ERROR.into_response();
}View on GitHub (pinned to bdb87aeaa4)