risingwavelabs/risingwave · error · SinkError
connector not specified when alter sink
Error message
connector not specified when alter sink
What it means
When altering sink properties at runtime, the controller reads the sink's existing `connector` WITH option to know which connector's validation to apply. If the sink has no `connector` property in its stored properties, the alter is rejected with `SinkError::Config("connector not specified when alter sink")`. Every sinkable object must declare its connector type.
Source
Thrown at src/meta/src/controller/streaming_job.rs:3647
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 {
sink_id: Set(sink_id),
properties: Set(risingwave_meta_model::Property(new_sink_props.clone())),
..Default::default()
};
sink_updates.push(active_sink);
// Prepare fragment updates for this sinkView on GitHub (pinned to 6469eb736d)
Solutions
- Recreate the sink including a valid `connector = '<type>'` WITH option.
- Verify the sink's stored properties with `SHOW SINK <name>` to confirm the connector is missing.
- Restore the connector property by re-creating the sink with the correct options, since runtime alteration cannot add it.
- Ensure the client issuing CREATE SINK always includes the connector option.
Example fix
-- before CREATE SINK s FROM mv WITH (properties.a = '1'); -- no connector -- after CREATE SINK s FROM mv WITH (connector = 'kafka', properties.a = '1');
Defensive patterns
Strategy: validation
Validate before calling
-- verify the connector option exists before altering SELECT properties FROM rw_sinks WHERE name = 'my_sink'; -- 'connector' key must be present
Prevention
- Always include `connector = '<type>'` in every CREATE SINK WITH clause.
- Reject sink-creation requests missing the connector option in application code.
- Avoid manual edits of sink properties in the catalog.
When it happens
Trigger: ALTER SINK ... ALTER CONNECTOR PROPS on a sink whose stored properties lack the `connector` key — either the sink was created without a connector option or its properties were stripped/corrupted.
Common situations: Sinks created through unusual/legacy paths without a connector option; catalog rows whose properties were manually edited; upstream clients resetting connector property.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- Field '{field}' is not allowed to be altered on the fly for
- unsupported sink type {}
- 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/0d07d603ec0f904c.
Report an issue: GitHub.