risingwavelabs/risingwave · error · SinkError

Doris/Starrocks connect error: {0}

Error message

Doris/Starrocks connect error: {0}

What it means

This is a variant of the SinkError enum (src/connector/src/sink/mod.rs:1089) used by RisingWave's sink connectors. It wraps an anyhow::Error produced when establishing a connection to a Doris or Starrocks external database fails during sink initialization or data loading. It reports the underlying connect failure message verbatim ({0}).

Source

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

    #[error("Mqtt error: {0}")]
    Mqtt(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[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,

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Verify the Doris/Starrocks FE host and http_port/query_port in the sink WITH options are reachable from RisingWave (curl the FE endpoint).
  2. Check username/password options and that the user has LOAD privileges on the target table.
  3. Confirm the Doris/Starrocks cluster is up and the database/table exist.
  4. Check network/firewall/DNS between RisingWave nodes and the FE nodes, then retry.

Example fix

// before
CREATE SINK s FROM mv WITH (
  connector = 'doris',
  url = 'http://fe-wrong-host:8030',
  table = 't'
);
// after
CREATE SINK s FROM mv WITH (
  connector = 'doris',
  url = 'http://fe-host:8030',
  user = 'admin',
  password = '***',
  database = 'db',
  table = 't'
);
Defensive patterns

Strategy: validation

Validate before calling

curl -u user:pass http://fe-host:8030/api/show_proc?path=/ --max-time 5 # verify FE reachability before creating the sink

Try / catch

match err { SinkError::DorisStarrocksConnect(e) => { log::error!("doris connect: {e:#}"); /* alert/retry with backoff */ } _ => return Err(err) }

Prevention

When it happens

Trigger: Creating or starting a Doris/Starrocks sink when the FE (Frontend) HTTP/RPC endpoint is unreachable, credentials are wrong, or the stream-load endpoint cannot be reached during sink commit.

Common situations: Wrong FE host/port in WITH options, DNS or network/firewall blocking the FE, Doris/Starrocks cluster down or restarting, wrong username/password, TLS misconfiguration.

Understand the failure class

Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.

Related errors


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