risingwavelabs/risingwave · error · BatchError
Failed to send result to channel
Error message
Failed to send result to channel
What it means
BatchError::SenderError sentinel: a batch task finished and tried to send its result chunk back over the exchange channel, but the receiver had already been dropped. This fires when the downstream query stage was cancelled (user abort, timeout, higher-priority error in another fragment) while upstream workers were still producing, so mpsc::send fails with SendError.
Solutions
- Treat as a benign race: if the query was intentionally cancelled, log at debug level and let the task terminate
- Propagate cancellation so sibling workers stop early instead of continuing to write to a closed channel
- For unexpected cases, check whether the receiver task panicked or was dropped prematurely
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/batch/src/error.rs:71 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/57de1d4193e3108b.
Report an issue: GitHub.
Appendix: source
Thrown at src/batch/src/error.rs:71
#[backtrace]
ArrayError,
),
#[error("Expr error: {0}")]
Expr(
#[from]
#[backtrace]
ExprError,
),
#[error("Serialize/deserialize error: {0}")]
Serde(
#[source]
#[backtrace]
BoxedError,
),
#[error("Failed to send result to channel")]
SenderError,
#[error(transparent)]
Internal(
#[from]
#[backtrace]
anyhow::Error,
),
#[error("Task aborted: {0}")]
Aborted(String),
#[error(transparent)]
PbFieldNotFound(#[from] PbFieldNotFound),
#[error(transparent)]
RpcError(
#[from]View on GitHub (pinned to 6469eb736d)