risingwavelabs/risingwave · error · anyhow::Error (ConnectorResult)
connector '{}' is not supported
Error message
connector '{}' is not supported What it means
After extracting the connector name, `enforce_secret_sink` dispatches it via `match_sink_name_str!` to `PropType::enforce_secret`; an unrecognized connector name falls into the fallback arm which bails with this message. The connector exists syntactically but is not a registered sink connector in this build.
Source
Thrown at src/connector/src/sink/mod.rs:488
format_desc: format_desc_with_secret,
db_name: sink_catalog.db_name,
sink_from_name: sink_catalog.sink_from_name,
})
}
}
pub fn enforce_secret_sink(props: &impl WithPropertiesExt) -> ConnectorResult<()> {
use crate::enforce_secret::EnforceSecret;
let connector = props
.get_connector()
.ok_or_else(|| anyhow!("Must specify 'connector' in WITH clause"))?;
let key_iter = props.key_iter();
match_sink_name_str!(
connector.as_str(),
PropType,
PropType::enforce_secret(key_iter),
|other| bail!("connector '{}' is not supported", other)
)
}
pub static GLOBAL_SINK_METRICS: LazyLock<SinkMetrics> =
LazyLock::new(|| SinkMetrics::new(&GLOBAL_METRICS_REGISTRY));
#[derive(Clone)]
pub struct SinkMetrics {
pub sink_commit_duration: LabelGuardedHistogramVec,
pub connector_sink_rows_received: LabelGuardedIntCounterVec,
// Log store writer metrics
pub log_store_first_write_epoch: LabelGuardedIntGaugeVec,
pub log_store_latest_write_epoch: LabelGuardedIntGaugeVec,
pub log_store_write_rows: LabelGuardedIntCounterVec,
// Log store reader metrics
pub log_store_latest_read_epoch: LabelGuardedIntGaugeVec,View on GitHub (pinned to 6469eb736d)
Solutions
- Use a supported sink connector name (see RisingWave sink docs)
- Fix the typo in the WITH clause
- Enable/upgrade to a version where the connector is supported
Example fix
// before WITH (connector = 's3_infected') // after WITH (connector = 'iceberg')
Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED: &[&str] = &["kafka", "iceberg", "jdbc", /* ... */];
if let Some(c) = props.get("connector") {
if !SUPPORTED.contains(&c.to_lowercase().as_str()) {
return Err(anyhow!("connector '{c}' is not supported"));
}
} Try / catch
enforce_secret_sink(&props).map_err(|e| {
if e.to_string().contains("is not supported") {
anyhow!("unknown sink connector — see docs for supported list")
} else { e }
})?; Prevention
- Use only documented sink connector names
- Verify connector support in the deployed RisingWave version
- CI-lint CREATE SINK statements against a connector whitelist
When it happens
Trigger: Calling `enforce_secret_sink` (via `gen_sink_plan`) with `connector` set to a name not matched by `match_sink_name_str!` — typo, source-only connector, or unsupported/unreleased connector.
Common situations: Typo like `connector='kafak'`; attempting a sink type not enabled in the deployed version; mixing up source and sink connector names.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- unsupported sink connector {}
- `{}` must be {}, or {}
- Primary key not defined for upsert doris sink (please define
- Can't get fe host from url
- please set only one of the 'index_column' or 'index' propert
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/1a38af2653641bfe.
Report an issue: GitHub.