risingwavelabs/risingwave · error · SinkError

Doris error: {0}

Error message

Doris error: {0}

What it means

A SinkError variant carrying a plain String message for general Doris sink failures. Unlike DorisStarrocksConnect it is raised after connection succeeds, for errors reported by Doris itself or the sink connector logic (e.g. stream load rejection, schema mismatch).

Source

Thrown at src/connector/src/sink/mod.rs:1160

    #[error("Nats error: {0}")]
    Nats(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("Google Pub/Sub error: {0}")]
    GooglePubSub(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("Doris/Starrocks connect error: {0}")]
    DorisStarrocksConnect(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("Doris error: {0}")]
    Doris(String),
    #[error("DeltaLake error: {0}")]
    DeltaLake(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("LanceDB error: {0}")]
    LanceDb(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("ElasticSearch/OpenSearch error: {0}")]
    ElasticSearchOpenSearch(
        #[source]
        #[backtrace]
        anyhow::Error,

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Read the wrapped message for the Doris-reported cause (often includes stream load URL and error log).
  2. Verify the Doris target table schema matches the sink's columns and types.
  3. Check sink WITH options against the Doris connector's supported options.
  4. Inspect Doris FE/BE logs (especially stream load error URLs) for details.

Example fix

// before
WITH (connector='doris', table='t', nonexistent_option='x')
// after
WITH (connector='doris', table='t', sink_decouple=true) // only supported options
Defensive patterns

Strategy: try-catch

Validate before calling

// Compare sink schema with Doris: SHOW CREATE TABLE db.t; ensure column names/types align

Try / catch

if let SinkError::Doris(msg) = err { log::error!("doris sink failed: {msg}"); /* route to DLQ or fix schema/options */ }

Prevention

When it happens

Trigger: Stream load requests rejected by Doris (non-OK response), unsupported sink options, data/schema incompatibilities with the Doris table, or internal connector errors surfaced as strings.

Common situations: Doris table schema differs from the RisingWave schema, Doris returns 'fail' status with a message, invalid connector option values, append-only vs upsert mismatch.

Related errors


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