{"record":{"id":"0d07d603ec0f904c","repo":"risingwavelabs/risingwave","slug":"connector-not-specified-when-alter-sink","errorCode":null,"errorMessage":"connector not specified when alter sink","messagePattern":"connector not specified when alter sink","errorType":"validation","errorClass":"SinkError","httpStatus":null,"severity":"error","filePath":"src/meta/src/controller/streaming_job.rs","lineNumber":3647,"sourceCode":"                        match_sink_name_str!(\n                            connector_type.as_str(),\n                            SinkType,\n                            {\n                                let mut new_sink_props = sink.properties.0.clone();\n                                new_sink_props.extend(alter_props.clone());\n                                SinkType::validate_alter_config_change(\n                                    &new_sink_props,\n                                    &alter_props,\n                                )\n                            },\n                            |sink: &str| Err(SinkError::Config(anyhow!(\n                                \"unsupported sink type {}\",\n                                sink\n                            )))\n                        )?\n                    }\n                    None => {\n                        return Err(SinkError::Config(anyhow!(\n                            \"connector not specified when alter sink\"\n                        ))\n                        .into());\n                    }\n                };\n\n                let mut new_sink_props = sink.properties.0.clone();\n                new_sink_props.extend(alter_props.clone());\n\n                // Prepare sink update\n                let active_sink = sink::ActiveModel {\n                    sink_id: Set(sink_id),\n                    properties: Set(risingwave_meta_model::Property(new_sink_props.clone())),\n                    ..Default::default()\n                };\n                sink_updates.push(active_sink);\n\n                // Prepare fragment updates for this sink","sourceCodeStart":3629,"sourceCodeEnd":3665,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/controller/streaming_job.rs#L3629-L3665","documentation":"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.","triggerScenarios":"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.","commonSituations":"Sinks created through unusual/legacy paths without a connector option; catalog rows whose properties were manually edited; upstream clients resetting connector property.","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."],"exampleFix":"-- before\nCREATE SINK s FROM mv WITH (properties.a = '1'); -- no connector\n-- after\nCREATE SINK s FROM mv WITH (connector = 'kafka', properties.a = '1');","handlingStrategy":"validation","validationCode":"-- verify the connector option exists before altering\nSELECT properties FROM rw_sinks WHERE name = 'my_sink'; -- 'connector' key must be present","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["sink","connector","validation","alter"],"backgroundTag":"missing-required-config-field","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}