risingwavelabs/risingwave · error · SchedulerError

{0}

Error message

{0}

What it means

SchedulerError::TaskExecutionError(String) carries a free-form message describing a failure of a batch execution task running on a compute node and reported back to the frontend scheduler. The text is produced by the failing stage/task (e.g. a shard-level execution error) and forwarded verbatim.

Source

Thrown at src/frontend/src/scheduler/error.rs:36

use risingwave_rpc_client::error::RpcError;
use thiserror::Error;

use crate::error::{ErrorCode, RwError};
use crate::scheduler::plan_fragmenter::QueryId;

#[derive(Error, Debug)]
pub enum SchedulerError {
    #[error("Pin snapshot error: {0} fails to get epoch {1}")]
    PinSnapshot(QueryId, u64),

    #[error(transparent)]
    RpcError(
        #[from]
        #[backtrace]
        RpcError,
    ),

    #[error("{0}")]
    TaskExecutionError(String),

    #[error("Task got killed because compute node running out of memory")]
    TaskRunningOutOfMemory,

    /// Used when receive cancel request for some reason, such as user cancel or timeout.
    #[error("Query cancelled: {0}")]
    QueryCancelled(String),

    #[error(
        "Reject query: the {0} query number reaches the limit: {1}. Use `SHOW PROCESSLIST` to check for hanging queries and cancel them if needed."
    )]
    QueryReachLimit(QueryMode, u64),

    #[error(transparent)]
    BatchError(
        #[from]
        #[backtrace]

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Read the compute node logs around the failing query's task id for the root cause; the frontend message is only a relay.
  2. Retry the query if a node restarted transiently.
  3. If the root cause is a data/expression error, fix the query (e.g. casting, division by zero) accordingly.
  4. Ensure compute nodes have adequate resources (memory/disk) to run the stage.
Defensive patterns

Strategy: try-catch

Try / catch

// surface full message + check compute logs
catch (e) { log(e.message); fetchComputeNodeLogs(queryId); throw e; }

Prevention

When it happens

Trigger: A distributed batch execution stage reports failure to the frontend — e.g. an internal execution error on a compute node, a task RPC response carrying an error status, or task setup/teardown failures.

Common situations: Compute node errors during parallel scan/aggregation; a stage dying after a node restart; expression evaluation errors surfaced from the execution engine.

Understand the failure class

Background: "query failed", "%w: SQL error" — wrapped database query errors in Go libraries explained — this error's family across 3 libraries.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/ee7abf1fd82024e1. Report an issue: GitHub.