{"record":{"id":"3cce36202e83aff4","repo":"risingwavelabs/risingwave","slug":"commit-checkpoint-interval-must-be-greater-than-3cce36","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/iceberg/config.rs","lineNumber":625,"sourceCode":"        }\n\n        // Enforce merge-on-read for append-only sinks\n        Self::validate_append_only_write_mode(&config.r#type, config.write_mode)?;\n        config.validate_enable_pk_index()?;\n        config.validate_manifest_rewrite_format(config.format_version)?;\n\n        // All configs start with \"catalog.\" will be treated as java configs.\n        config.java_catalog_props = iceberg_java_catalog_props_from_options(\n            values\n                .iter()\n                .map(|(key, value)| (key.as_str(), value.as_str())),\n        );\n        config\n            .unknown_fields\n            .retain(|key, _| key != \"connector\" && !key.starts_with(\"catalog.\"));\n\n        if config.commit_checkpoint_interval == 0 {\n            return Err(SinkError::Config(anyhow!(\n                \"`commit-checkpoint-interval` must be greater than 0\"\n            )));\n        }\n\n        if config.compaction_interval_sec == Some(0) {\n            return Err(SinkError::Config(anyhow!(\n                \"`compaction_interval_sec` must be greater than 0\"\n            )));\n        }\n\n        if config.trigger_snapshot_count == Some(0) {\n            return Err(SinkError::Config(anyhow!(\n                \"`compaction.trigger_snapshot_count` must be greater than 0\"\n            )));\n        }\n\n        if config.max_snapshots_num_before_compaction == Some(0) {\n            return Err(SinkError::Config(anyhow!(","sourceCodeStart":607,"sourceCodeEnd":643,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/iceberg/config.rs#L607-L643","documentation":"Raised when the `commit-checkpoint-interval` option on an Iceberg sink is 0. This interval controls how often commit checkpoints occur; 0 would cause immediate/never-commit behavior and is rejected during config parsing in from_btreemap.","triggerScenarios":"Creating an Iceberg sink with `commit_checkpoint_interval = 0` in the WITH options (or a profile/template defaulting it to 0).","commonSituations":"Copy-paste of config with placeholder 0; programmatic config builders that leave the field at its numeric default; users misunderstanding '0 = disabled'.","solutions":["Set `commit_checkpoint_interval` to a positive number of seconds, e.g. 60.","Remove the option entirely to use the default value.","If using a config generator, ensure the field is populated from a validated non-zero input."],"exampleFix":"// before\nWITH (connector = 'iceberg', commit_checkpoint_interval = 0)\n// after\nWITH (connector = 'iceberg', commit_checkpoint_interval = 60)","handlingStrategy":"validation","validationCode":"if (Number(opts.commit_checkpoint_interval ?? 60) <= 0) {\n  throw new Error('`commit-checkpoint-interval` must be greater than 0');\n}","typeGuard":"function isValidInterval(v) {\n  return v === undefined || (Number.isInteger(v) && v > 0);\n}","tryCatchPattern":"try {\n  await createIcebergSink(opts);\n} catch (e) {\n  if (String(e).includes('commit-checkpoint-interval')) {\n    delete opts.commit_checkpoint_interval;\n    return createIcebergSink(opts);\n  }\n  throw e;\n}","preventionTips":["Never use 0 to mean 'disabled' for interval options; omit them instead.","Clamp interval inputs in config UIs to >= 1.","Keep interval values in a shared constants file with sane defaults."],"tags":["iceberg","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-23T08:17:48.524Z"}