risingwavelabs/risingwave · error · SinkError
unsupported sink type {}
Error message
unsupported sink type {} What it means
After resolving the sink's `connector` value to lowercase, the controller maps it to a `SinkType` via `match_sink_name_str!`. If the connector name does not correspond to any known sink type, the fallback closure returns `SinkError::Config("unsupported sink type <name>")`. Only connectors with registered SinkType implementations support runtime config alteration validation.
Source
Thrown at src/meta/src/controller/streaming_job.rs:3640
// Validate that sink props can be altered
match sink.properties.inner_ref().get(CONNECTOR_TYPE_KEY) {
Some(connector) => {
let connector_type = connector.to_lowercase();
check_sink_allow_alter_on_fly_fields(&connector_type, &prop_keys)
.map_err(|e| SinkError::Config(anyhow!(e)))?;
match_sink_name_str!(
connector_type.as_str(),
SinkType,
{
let mut new_sink_props = sink.properties.0.clone();
new_sink_props.extend(alter_props.clone());
SinkType::validate_alter_config_change(
&new_sink_props,
&alter_props,
)
},
|sink: &str| Err(SinkError::Config(anyhow!(
"unsupported sink type {}",
sink
)))
)?
}
None => {
return Err(SinkError::Config(anyhow!(
"connector not specified when alter sink"
))
.into());
}
};
let mut new_sink_props = sink.properties.0.clone();
new_sink_props.extend(alter_props.clone());
// Prepare sink update
let active_sink = sink::ActiveModel {View on GitHub (pinned to 6469eb736d)
Solutions
- Check the sink's connector value (`SHOW SINK`) and fix misspellings by recreating the sink with a supported connector.
- Use one of the supported sink connectors (kafka, iceberg, etc.) that implement SinkType.
- Recreate the sink with the corrected connector name, then apply the alter.
- If a custom connector is required, implement/extend SinkType support for it.
Example fix
-- before CREATE SINK s ... WITH (connector = 'kafak'); -- unsupported -- after CREATE SINK s ... WITH (connector = 'kafka');
Defensive patterns
Strategy: validation
Validate before calling
-- confirm the connector is a supported sink type before altering SELECT properties FROM rw_sinks WHERE name = 'my_sink'; -- connector must be a known value (kafka, iceberg, ...)
Prevention
- Always create sinks with an exact, documented connector name.
- Validate connector names client-side against the supported list.
- Watch for connector renames between RisingWave versions.
When it happens
Trigger: Altering sink props when the sink's `connector` property holds an unrecognized or misspelled connector name, or a connector that lacks SinkType support.
Common situations: Typo in the connector name at CREATE SINK time (e.g. 'kafak'); custom/experimental connectors without SinkType support; connector renamed across versions.
Related errors
- Field '{field}' is not allowed to be altered on the fly for
- connector not specified when alter sink
- Only Es sink supports struct, got {:?}: {:?}
- Unknown source connector: {connector_name}
- No allow_alter_on_fly fields registered for connector: {conn
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/48a02ec49b77d6cc.
Report an issue: GitHub.