risingwavelabs/risingwave · error

register v3 sink worker

Error message

register v3 sink worker

What it means

For sink v3 (stream sink framework), generate_streaming_job registers the sink worker with the sink manager; a registration failure is wrapped with context 'register v3 sink worker'. This usually means the sink manager refused or failed to register the sink (e.g. connector coordinator unavailable or invalid config).

Solutions

  1. Read the chained inner error for the root cause (e.g. invalid Iceberg catalog config) and fix the sink properties.
  2. Ensure the sink manager / coordinator service is healthy and reachable from meta.
  3. Retry creation after fixing connector configuration or infrastructure issues.

Example fix

// before
CREATE SINK s FROM mv WITH (connector='iceberg', warehouse='bad-path');
// after
CREATE SINK s FROM mv WITH (
  connector='iceberg',
  warehouse='s3://bucket/warehouse',
  catalog='glue', ...);
Defensive patterns

Strategy: try-catch

Validate before calling

// validate iceberg/sink properties before creating
let props = sink.get_properties();
if props.get("warehouse").map_or(true, |w| w.is_empty()) {
    return Err("warehouse must be set for iceberg v3 sink".into());
}

Try / catch

match create_streaming_job(..).await {
    Err(e) if e.to_string().contains("register v3 sink worker") => {
        // inspect chained root cause, fix sink config/infrastructure, retry
    }
    other => other?,
}

Prevention

When it happens

Trigger: Creating a v3 sink where meta's register_sink call into the sink manager returns an error — inner cause is preserved in the chained error message.

Common situations: Iceberg sink with misconfigured catalog/warehouse; sink coordinator/worker service not running; network issues between meta and sink workers; unsupported sink properties for v3.

Understand the failure class

Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.

Related errors


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

Appendix: source

Thrown at src/meta/src/rpc/ddl_controller.rs:1384

                }
                // Validate the sink on the connector node.
                validate_sink(sink).await?;
                // For Iceberg pk-index sinks, spawn the per-sink commit worker now
                // so it's ready to receive epoch reports from the very first
                // barrier instead of relying on lazy registration on every
                // commit.
                if crate::manager::iceberg_pk_index_sink::is_iceberg_pk_index_sink(&sink.properties)
                {
                    let iceberg_config =
                        crate::manager::iceberg_pk_index_sink::build_iceberg_config(sink)?;
                    self.iceberg_pk_index_sink_manager
                        .register_sink(
                            sink.id,
                            crate::barrier::to_partial_graph_id(sink.database_id, None),
                            iceberg_config,
                        )
                        .await
                        .map_err(|e| anyhow!(e).context("register v3 sink worker"))?;
                }
                let connector_name = sink.get_properties().get(UPSTREAM_SOURCE_KEY).cloned();
                let attr = sink.format_desc.as_ref().map(|sink_info| {
                    jsonbb::json!({
                        "format": sink_info.format().as_str_name(),
                        "encode": sink_info.encode().as_str_name(),
                    })
                });
                report_create_object(
                    streaming_job.id(),
                    "sink",
                    PbTelemetryDatabaseObject::Sink,
                    connector_name,
                    attr,
                );
            }
            StreamingJob::Source(source) => {
                // Register the source on the connector node.

View on GitHub (pinned to 6469eb736d)