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
- Verify the Pulsar service URL and that the broker is reachable from RisingWave.
- Check authentication options (token/JWT) are valid and not expired.
- Confirm the topic (tenant/namespace/topic) exists and the producer has permissions.
- 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
- Check broker URL, port, and auth token expiry before creating the sink
- Ensure the topic exists and the role has produce permissions
- Keep token credentials refreshable, not hard-coded
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
- {pulsar::Error}
- {pulsar::Error from delivery future}
- {connection_err (pulsar::Error) after retries exhausted}
- failed to parse response body
- Failed connection {:?},{:?}
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/0a94e1c04a31a189.
Report an issue: GitHub.