{"record":{"id":"eac69d054f182791","repo":"risingwavelabs/risingwave","slug":"risingwave-is-not-compiled-with-feature-sink","errorCode":null,"errorMessage":"RisingWave is not compiled with feature `sink-{}`","messagePattern":"RisingWave is not compiled with feature `sink-(.+?)`","errorType":"validation","errorClass":"SinkError::Config","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/utils.rs","lineNumber":51,"sourceCode":"pub(crate) mod dummy {\n\n    use std::collections::BTreeMap;\n    use std::fmt::{Debug, Formatter};\n    use std::marker::PhantomData;\n\n    use anyhow::anyhow;\n    use phf::{Set, phf_set};\n    use tokio::sync::mpsc::UnboundedSender;\n\n    use crate::connector_common::IcebergSinkCompactionUpdate;\n    use crate::enforce_secret::EnforceSecret;\n    use crate::error::ConnectorResult;\n    use crate::sink::prelude::*;\n    use crate::sink::{LogSinker, SinkCommitCoordinator, SinkLogReader};\n\n    #[allow(dead_code)]\n    pub fn err_feature_not_enabled(sink_name: &'static str) -> SinkError {\n        SinkError::Config(anyhow!(\n            \"RisingWave is not compiled with feature `sink-{}`\",\n            sink_name\n        ))\n    }\n\n    /// Implement this trait will bring a dummy `impl Sink` for the type which always returns an error.\n    pub trait FeatureNotEnabledSinkMarker: Send + 'static {\n        #[allow(dead_code)]\n        const SINK_NAME: &'static str;\n    }\n\n    /// A dummy coordinator that always returns an error.\n    #[allow(dead_code)]\n    pub struct FeatureNotEnabledLogSinker<S: FeatureNotEnabledSinkMarker>(PhantomData<S>);\n    #[async_trait::async_trait]\n    impl<S: FeatureNotEnabledSinkMarker> LogSinker for FeatureNotEnabledLogSinker<S> {\n        async fn consume_log_and_sink(self, _log_reader: impl SinkLogReader) -> Result<!> {\n            Err(err_feature_not_enabled(S::SINK_NAME))","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/utils.rs#L33-L69","documentation":"RisingWave gates each sink connector behind a compile-time cargo feature (e.g. sink-turbopuffer, sink-kafka). When a sink type is requested but its feature was not enabled in the build, err_feature_not_enabled returns this config error instead of a working sink. It is raised during sink creation/validation (try_from, enforce_secret/enforce_one, log sinker construction) and is purely a build-configuration issue, not a runtime or SQL issue.","triggerScenarios":"Running a risingwave binary (often a minimal/custom `risingwave` or `risectl` build) compiled without the needed `sink-*` feature, then executing CREATE SINK with connector='kafka'/'turbopuffer'/etc., or configuring a sink in a deployment image built with reduced features.","commonSituations":"Using a slim release binary that strips optional connectors; building with `cargo build --no-default-features` or a custom feature set; deploying an image where the feature flag was omitted.","solutions":["Rebuild with the feature enabled, e.g. `cargo build --features sink-kafka` (or use `./risedev build` with the default feature set).","Use the official all-in-one `risingwave` binary/docker image, which enables all sink features.","Verify the feature list with `cargo metadata` or the build log to confirm the sink feature was compiled in."],"exampleFix":"// before\ncargo build -p risingwave --no-default-features --features rw-static-link\n// after\ncargo build -p risingwave --no-default-features --features rw-static-link,sink-turbopuffer","handlingStrategy":"validation","validationCode":"// verify the binary supports the connector before issuing CREATE SINK:\n// risingwave says available connectors can be checked in docs; for custom builds check features:\n// cargo tree -p risingwave --features sink-kafka >/dev/null && echo enabled","typeGuard":null,"tryCatchPattern":"match create_sink_result {\n    Err(e) if e.to_string().contains(\"not compiled with feature\") => {\n        println!(\"connector unavailable in this build; use an all-features binary or rebuild\");\n    }\n    other => other?,\n}","preventionTips":["Use official all-in-one binaries/images that enable all sink features.","When building custom binaries, mirror the full default feature list of the release profile.","Document required `sink-*` features in deployment pipelines."],"tags":["feature-flags","build","sink","compile-time"],"backgroundTag":"feature-not-enabled","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}