{"record":{"id":"2917358fe6ceec5d","repo":"risingwavelabs/risingwave","slug":"commit-checkpoint-interval-must-be-greater-than","errorCode":null,"errorMessage":"`commit_checkpoint_interval` must be greater than 0","messagePattern":"`commit_checkpoint_interval` must be greater than 0","errorType":"validation","errorClass":"SinkError::Config","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/clickhouse.rs","lineNumber":602,"sourceCode":"        if !self.is_append_only\n            && !clickhouse_engine.is_collapsing_engine()\n            && !clickhouse_engine.is_delete_replacing_engine()\n        {\n            return match clickhouse_engine {\n                ClickHouseEngine::ReplicatedReplacingMergeTree(None) | ClickHouseEngine::ReplacingMergeTree(None) | ClickHouseEngine::SharedReplacingMergeTree(None) =>  {\n                    Err(SinkError::ClickHouse(\"To enable upsert with a `ReplacingMergeTree`, you must set a `clickhouse.delete.column` to the UInt8 column in ClickHouse used to signify deletes. See https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/replacingmergetree#is_deleted for more information\".to_owned()))\n                }\n                _ => Err(SinkError::ClickHouse(\"If you want to use upsert, please use either `VersionedCollapsingMergeTree`, `CollapsingMergeTree` or the `ReplacingMergeTree` in ClickHouse\".to_owned()))\n            };\n        }\n\n        self.check_column_name_and_type(&clickhouse_column)?;\n        if !self.is_append_only {\n            self.check_pk_match(&clickhouse_column)?;\n        }\n\n        if self.config.common.commit_checkpoint_interval == 0 {\n            return Err(SinkError::Config(anyhow!(\n                \"`commit_checkpoint_interval` must be greater than 0\"\n            )));\n        }\n        Ok(())\n    }\n\n    fn validate_alter_config(config: &BTreeMap<String, String>) -> Result<()> {\n        ClickHouseConfig::from_btreemap(config.clone())?;\n        Ok(())\n    }\n\n    async fn new_log_sinker(&self, writer_param: SinkWriterParam) -> Result<Self::LogSinker> {\n        let writer = ClickHouseSinkWriter::new(\n            self.config.clone(),\n            self.schema.clone(),\n            self.pk_indices.clone(),\n            self.is_append_only,\n        )","sourceCodeStart":584,"sourceCodeEnd":620,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/clickhouse.rs#L584-L620","documentation":"Sink validation error raised in ClickHouse sink's validate(): the user set commit_checkpoint_interval to zero (or a non-positive value). The checkpoint interval controls how often the sink commits to ClickHouse and must be a positive number; 0 would mean commit never/invalidly.","triggerScenarios":"ClickHouse sink created with commit_checkpoint_interval=0 in the WITH options (or a config path setting it to 0 in the sink common config).","commonSituations":"Attempting to 'disable' checkpoint commits by setting 0; copying tuning parameters from other sinks where 0 means disabled.","solutions":["Set commit_checkpoint_interval to a positive integer (checkpoints per commit).","Remove the option to use the default interval instead of 0.","Review sink common config files for a stray commit_checkpoint_interval = 0."],"exampleFix":"// before\nWITH (connector='clickhouse', commit_checkpoint_interval=0, ...)\n// after\nWITH (connector='clickhouse', commit_checkpoint_interval=10, ...)","handlingStrategy":"validation","validationCode":"if (Number(props.commit_checkpoint_interval ?? 1) <= 0) throw new Error('commit_checkpoint_interval must be greater than 0');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never use 0 to 'disable' commits on ClickHouse sinks; unset the option for defaults.","Treat 0 in interval-like options as invalid unless a connector explicitly allows it.","Validate generated sink configs with a linter that enforces positive intervals."],"tags":["clickhouse","sink","config","validation"],"backgroundTag":"invalid-config-value","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"}