risingwavelabs/risingwave · error · BatchError
Serving vnode mapping not found for fragment
Error message
Serving vnode mapping not found for fragment {0} What it means
BatchError::ServingVnodeMappingNotFound: the serving-stage vnode mapping for the given fragment id is missing from the frontend's cached mapping tables. It fires when a serving query tries to route reads to compute nodes for a matview fragment whose consistent-hash distribution info was never registered, was evicted during scale-out/reschedule, or the cache is stale relative to the fragment still referenced by the plan.
Solutions
- Retry after the frontend refreshes its fragment/vnode mapping cache from meta
- Check meta logs to confirm the fragment exists and a serving vnode mapping was broadcast
- If a matview was just created or rescheduled, re-run the query once caches converge
- Report as a bug if it persists for a stable fragment id
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/batch/src/error.rs:134 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/7f7cf237e5656b68.
Report an issue: GitHub.
Appendix: source
Thrown at src/batch/src/error.rs:134
ExternalSystemError(
#[from]
#[backtrace]
BatchExternalSystemError,
),
// Make the ref-counted type to be a variant for easier code structuring.
// TODO(error-handling): replace with `thiserror_ext::Arc`
#[error(transparent)]
Shared(
#[from]
#[backtrace]
Arc<Self>,
),
#[error("Empty workers found")]
EmptyWorkerNodes,
#[error("Serving vnode mapping not found for fragment {0}")]
ServingVnodeMappingNotFound(FragmentId),
#[error("Streaming vnode mapping has not been initialized")]
StreamingVnodeMappingNotInitialized,
#[error("Streaming vnode mapping not found for fragment {0}")]
StreamingVnodeMappingNotFound(FragmentId),
#[error("Not enough memory to run this query, batch memory limit is {0} bytes")]
OutOfMemory(u64),
#[error("Failed to spill out to disk")]
Spill(
#[from]
#[backtrace]
opendal::Error,
),
View on GitHub (pinned to 6469eb736d)