{"record":{"id":"ec437f9eb7f70635","repo":"risingwavelabs/risingwave","slug":"config-conflict-commit-checkpoint-interval-larg-ec437f","errorCode":null,"errorMessage":"config conflict: `commit_checkpoint_interval` larger than 1 means that sink decouple must be enabled, but session config sink_decouple is disabled","messagePattern":"config conflict: `commit_checkpoint_interval` larger than 1 means that sink decouple must be enabled, but session config sink_decouple is disabled","errorType":"validation","errorClass":"SinkError::Config","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/mod.rs","lineNumber":830,"sourceCode":"    /// Return whether this sink uses exactly-once commit state for the loaded properties.\n    fn is_exactly_once(_properties: &BTreeMap<String, String>) -> Result<bool> {\n        Ok(false)\n    }\n\n    fn set_default_commit_checkpoint_interval(\n        desc: &mut SinkDesc,\n        user_specified: &SinkDecouple,\n    ) -> Result<()> {\n        if is_sink_support_commit_checkpoint_interval(Self::SINK_NAME) {\n            match desc.properties.get(COMMIT_CHECKPOINT_INTERVAL) {\n                Some(commit_checkpoint_interval) => {\n                    let commit_checkpoint_interval = commit_checkpoint_interval\n                        .parse::<u64>()\n                        .map_err(|e| SinkError::Config(anyhow!(e)))?;\n                    if matches!(user_specified, SinkDecouple::Disable)\n                        && commit_checkpoint_interval > 1\n                    {\n                        return Err(SinkError::Config(anyhow!(\n                            \"config conflict: `commit_checkpoint_interval` larger than 1 means that sink decouple must be enabled, but session config sink_decouple is disabled\"\n                        )));\n                    }\n                }\n                None => match user_specified {\n                    SinkDecouple::Default | SinkDecouple::Enable => {\n                        if matches!(Self::SINK_NAME, ICEBERG_SINK) {\n                            desc.properties.insert(\n                                COMMIT_CHECKPOINT_INTERVAL.to_owned(),\n                                ICEBERG_DEFAULT_COMMIT_CHECKPOINT_INTERVAL.to_string(),\n                            );\n                        } else {\n                            desc.properties.insert(\n                                COMMIT_CHECKPOINT_INTERVAL.to_owned(),\n                                DEFAULT_COMMIT_CHECKPOINT_INTERVAL_WITH_SINK_DECOUPLE.to_string(),\n                            );\n                        }\n                    }","sourceCodeStart":812,"sourceCodeEnd":848,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/mod.rs#L812-L848","documentation":"This error is raised when validating sink WITH clause options in the RisingWave connector sink layer. `commit_checkpoint_interval` greater than 1 means the sink commits data across multiple checkpoints, which requires sink decoupling (an async commit coordinator separated from the barrier flow). If the session-level `sink_decouple` setting is explicitly disabled while a `commit_checkpoint_interval > 1` is given, the configuration is contradictory and sink creation is rejected.","triggerScenarios":"Creating a sink with `commit_checkpoint_interval = N` (N > 1) in the WITH options while the session variable `sink_decouple` is set to `disabled` (SinkDecouple::Disable), e.g. via `SET sink_decouple = false` or a session/profile default.","commonSituations":"Operators tuning commit frequency for Kafka/Iceberg sinks to reduce commit overhead set commit_checkpoint_interval, forgetting the session default or their `SET sink_decouple = DISABLED` conflicts with it; upgrading from older versions where sink_decouple defaulted differently.","solutions":["Enable sink decoupling: `SET sink_decouple = true` (or `ENABLED`) in the session before creating the sink","Remove `commit_checkpoint_interval` from the WITH options so it defaults to 1 and no decoupling is required","Set the session variable inline in the CREATE SINK session: connect with `options -c 'SET sink_decouple=true'` or run `SET sink_decouple = true; CREATE SINK ...`"],"exampleFix":"-- before\nSET sink_decouple = false;\nCREATE SINK s FROM mv INTO kafka_conn WITH (commit_checkpoint_interval = 10);\n\n-- after\nSET sink_decouple = true;\nCREATE SINK s FROM mv INTO kafka_conn WITH (commit_checkpoint_interval = 10);","handlingStrategy":"validation","validationCode":"let interval: u64 = with_options.get(\"commit_checkpoint_interval\").map(|s| s.parse()).transpose()?.unwrap_or(1);\nif interval > 1 && !sink_decouple_enabled {\n    return Err(\"commit_checkpoint_interval > 1 requires sink_decouple enabled\".into());\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Before CREATE SINK, run `SHOW sink_decouple;` and align it with any commit_checkpoint_interval option","Standardize a session init script that sets sink_decouple=true for sinks using decoupled commits"],"tags":["sink","config","risingwave"],"backgroundTag":"conflicting-config-options","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"}