{"record":{"id":"ef06a3cdc84f22d8","repo":"risingwavelabs/risingwave","slug":"compaction-task-id-refill-capacity-must-be-great","errorCode":null,"errorMessage":"`compaction_task_id_refill_capacity` must be greater than 0","messagePattern":"`compaction_task_id_refill_capacity` must be greater than 0","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/meta/node/src/lib.rs","lineNumber":644,"sourceCode":"        panic!(\"{}\", error_msg);\n    }\n\n    if config.meta.checkpoint_read_chunk_size == 0 {\n        let error_msg = \"`checkpoint_read_chunk_size` must be greater than 0\";\n        tracing::error!(error_msg);\n        panic!(\"{}\", error_msg);\n    }\n\n    if config.meta.checkpoint_read_max_in_flight_chunks == 0 {\n        let error_msg = \"`checkpoint_read_max_in_flight_chunks` must be greater than 0\";\n        tracing::error!(error_msg);\n        panic!(\"{}\", error_msg);\n    }\n\n    if config.meta.compaction_task_id_refill_capacity == 0 {\n        let error_msg = \"`compaction_task_id_refill_capacity` must be greater than 0\";\n        tracing::error!(error_msg);\n        panic!(\"{}\", error_msg);\n    }\n\n    if config.meta.iceberg_compaction_report_timeout_sec == 0 {\n        let error_msg = \"`iceberg_compaction_report_timeout_sec` must be greater than 0\";\n        tracing::error!(error_msg);\n        panic!(\"{}\", error_msg);\n    }\n\n    if config.meta.iceberg_compaction_config_refresh_interval_sec == 0 {\n        let error_msg = \"`iceberg_compaction_config_refresh_interval_sec` must be greater than 0\";\n        tracing::error!(error_msg);\n        panic!(\"{}\", error_msg);\n    }\n}\n","sourceCodeStart":626,"sourceCodeEnd":659,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/node/src/lib.rs#L626-L659","documentation":"validate_config in src/meta/node/src/lib.rs:644 panics when `config.meta.compaction_task_id_refill_capacity` is 0. This capacity controls the token pool used to assign compaction task IDs; an empty pool would deadlock compaction scheduling, so it is rejected at startup.","triggerScenarios":"Meta node startup with `meta.compaction_task_id_refill_capacity` set to 0 in the config.","commonSituations":"Tuning compaction scheduling knobs without understanding the ID refill pool, or copying partial config snippets.","solutions":["Set `meta.compaction_task_id_refill_capacity` to a positive integer in the config file.","Remove the custom override to use the default capacity.","Re-run `./risedev generate-example-config` after config definition changes to keep examples valid."],"exampleFix":"// before\n[meta]\ncompaction_task_id_refill_capacity = 0\n\n// after\n[meta]\ncompaction_task_id_refill_capacity = 1000","handlingStrategy":"validation","validationCode":"assert!(cfg.meta.compaction_task_id_refill_capacity > 0, \"compaction_task_id_refill_capacity must be > 0\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat capacity knobs as positive integers in all config tooling.","Validate config files with a schema validator before launching meta nodes.","Copy values only from the checked-in example.toml, not ad-hoc snippets."],"tags":["config","meta-node","compaction","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"}