risingwavelabs/risingwave · error · SinkError

Pulsar error: {0}

Error message

Pulsar error: {0}

What it means

A SinkError variant wrapping an anyhow::Error from the pulsar crate. Raised when the Pulsar sink fails to produce messages: producer creation failure, topic not found, send/ack timeouts, or broker connection loss.

Source

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

        anyhow::Error,
    ),
    #[error("LanceDB error: {0}")]
    LanceDb(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("ElasticSearch/OpenSearch error: {0}")]
    ElasticSearchOpenSearch(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("Starrocks error: {0}")]
    Starrocks(String),
    #[error("File error: {0}")]
    File(String),
    #[error("Pulsar error: {0}")]
    Pulsar(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error(transparent)]
    Internal(
        #[from]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("BigQuery error: {0}")]
    BigQuery(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("DynamoDB error: {0}")]

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Verify the Pulsar service URL and that the broker is reachable from RisingWave.
  2. Check authentication options (token/JWT) are valid and not expired.
  3. Confirm the topic (tenant/namespace/topic) exists and the producer has permissions.
  4. Inspect the wrapped anyhow message; if transient broker issues, retry/restart the sink.
Defensive patterns

Strategy: retry

Validate before calling

pulsar-admin topics list public/default # and test connectivity: nc -zv broker 6650

Try / catch

match err { SinkError::Pulsar(e) => { log::warn!("pulsar: {e:#}"); retry_with_backoff() /* transient broker errors */ } _ => return Err(err) }

Prevention

When it happens

Trigger: Connecting to the Pulsar broker fails or drops, the topic/service URL is wrong, authentication (JWT/token) fails, or produce calls time out without acknowledgment.

Common situations: Wrong service URL or port (6650 vs 8080), expired JWT token, topic namespace/tenant misconfigured, broker overload or unacked-message limits hit.

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/0a94e1c04a31a189. Report an issue: GitHub.