risingwavelabs/risingwave · error

unsupported sink connector {}

Error message

unsupported sink connector {}

What it means

The `connector` property was present but its value does not match any registered sink connector name, so the `match_sink_name_str!` macro's fallback returns this error. The sink executor cannot build an unknown connector type and fails the executor at startup.

Source

Thrown at src/stream/src/from_proto/sink.rs:265

        let connector = {
            let sink_type = properties_with_secret
                .get(CONNECTOR_TYPE_KEY)
                .ok_or_else(|| {
                    StreamExecutorError::from((
                        SinkError::Config(anyhow!("missing config: {}", CONNECTOR_TYPE_KEY)),
                        sink_id,
                    ))
                })?;

            let sink_type_str = sink_type.to_lowercase();
            match_sink_name_str!(
                sink_type_str.as_str(),
                SinkType,
                Ok(SinkType::SINK_NAME),
                |other: &str| {
                    Err(StreamExecutorError::from((
                        SinkError::Config(anyhow!("unsupported sink connector {}", other)),
                        sink_id,
                    )))
                }
            )?
        };

        let (sink_param, columns) = build_sink_param(sink_desc, properties_with_secret, connector)?;

        let sink_write_param = SinkWriterParam {
            executor_id: params.executor_id,
            vnode_bitmap: params.vnode_bitmap.clone(),
            meta_client: params.env.meta_client().map(SinkMetaClient::MetaClient),
            extra_partition_col_idx: sink_desc.extra_partition_col_idx.map(|v| v as usize),

            actor_id: params.actor_context.id,
            sink_id,
            sink_name,
            connector: connector.to_owned(),

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Use a valid connector name (e.g. `kafka`, `redis`, `elasticsearch`, `iceberg`, `snowflake`, `pubsub`, `kinesis`, etc.) — check the docs for the exact list.
  2. Fix typos in the `connector` value and recreate the sink.
  3. Verify the connector is supported in your RisingWave build/edition; upgrade if using a newer connector.
  4. Trim whitespace and use lowercase for the connector value.

Example fix

-- before
CREATE SINK s FROM t WITH (connector = 'kafaka', ...);
-- after
CREATE SINK s FROM t WITH (connector = 'kafka', ...);
Defensive patterns

Strategy: validation

Validate before calling

-- List supported connectors (docs / SHOW) and validate the value before creating the sink
SELECT name FROM rw_catalog.rw_connectors; -- or consult supported-sinks documentation

Try / catch

// Catch the unsupported-connector error at sink creation and suggest valid names
try {
    createSink({ connector: 'kafaka' });
} catch (e) {
    if (String(e).includes('unsupported sink connector')) {
        // fall back to a valid connector name from the supported list
    }
}

Prevention

When it happens

Trigger: `new_boxed_executor` parses the `connector` property and the resulting string is not one of the compiled-in connector names — e.g. `connector = 'kafaka'`, a connector name from a different RisingWave edition/build, or extra whitespace/casing that still fails the match.

Common situations: Misspelled connector names; using a connector available only in a commercial/newer build on an OSS build; copy-pasted config from another system; case/whitespace issues beyond the macro's lowercasing.

Related errors


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