{"record":{"id":"a6c0406668ff271f","repo":"risingwavelabs/risingwave","slug":"parse-error-of-commit-checkpoint-interval-e","errorCode":null,"errorMessage":"<parse error of commit_checkpoint_interval: {e}>","messagePattern":"<parse error of commit_checkpoint_interval: (.+?)>","errorType":"validation","errorClass":"SinkError::Config","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/mod.rs","lineNumber":826,"sourceCode":"    const SINK_NAME: &'static str;\n\n    type LogSinker: LogSinker;\n\n    /// 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(),","sourceCodeStart":808,"sourceCodeEnd":844,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/mod.rs#L808-L844","documentation":"`commit_checkpoint_interval` is validated for sinks that support it (per `is_sink_support_commit_checkpoint_interval`); the property must parse as `u64`. A non-numeric or overflow value fails `parse::<u64>()` and is wrapped into this Config error. (Note: the literal message in the SOURCE is just the parse error `anyhow!(e)`; the index label describes it.)","triggerScenarios":"Setting `commit_checkpoint_interval` in the sink WITH clause to a value that cannot parse as u64 (e.g. `'abc'`, `'-1'`, `'1.5'`, or a value exceeding u64::MAX).","commonSituations":"Quoted or humanized values like `'10s'` or `'1k'`; negative numbers; copy-paste of an interval duration where a plain count is expected.","solutions":["Set `commit_checkpoint_interval` to a plain non-negative integer (e.g. '3')","Remove the option to use the default","Check docs: the value is a checkpoint count, not a duration"],"exampleFix":"// before\nWITH (connector = 'kafka', commit_checkpoint_interval = '10s')\n// after\nWITH (connector = 'kafka', commit_checkpoint_interval = '10')","handlingStrategy":"validation","validationCode":"fn valid_commit_checkpoint_interval(v: &str) -> bool {\n    v.parse::<u64>().is_ok()\n}\nif let Some(v) = props.get(\"commit_checkpoint_interval\") {\n    if !valid_commit_checkpoint_interval(v) {\n        return Err(anyhow!(\"commit_checkpoint_interval must be a u64 integer\"));\n    }\n}","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"commit_checkpoint_interval\") || e.to_string().contains(\"invalid digit\") => {\n        bail!(\"set commit_checkpoint_interval to a plain integer, e.g. '3'\");\n    }\n    other => other,\n}","preventionTips":["Provide commit_checkpoint_interval as a plain non-negative integer string","Never pass durations or humanized quantities for this option","Validate numeric WITH options client-side before DDL submission"],"tags":["rust","config","parse","sink"],"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-23T08:17:48.524Z"}