risingwavelabs/risingwave · critical
`parallelism_control_batch_size` must be greater than 0
Error message
`parallelism_control_batch_size` must be greater than 0
What it means
validate_config in src/meta/node/src/lib.rs:626 panics when `config.meta.parallelism_control_batch_size` equals 0. This batch size controls how many parallelism-control operations are processed per batch; zero would make batching meaningless or divide-by-zero-prone, so it is rejected at startup.
Source
Thrown at src/meta/node/src/lib.rs:626
config.session_init,
shutdown,
))
.await
.unwrap();
})
}
fn validate_config(config: &RwConfig) {
if config.meta.meta_leader_lease_secs <= 2 {
let error_msg = "`meta_leader_lease_secs` must be greater than 2";
tracing::error!(error_msg);
panic!("{}", error_msg);
}
if config.meta.parallelism_control_batch_size == 0 {
let error_msg = "`parallelism_control_batch_size` must be greater than 0";
tracing::error!(error_msg);
panic!("{}", error_msg);
}
if config.meta.checkpoint_read_chunk_size == 0 {
let error_msg = "`checkpoint_read_chunk_size` must be greater than 0";
tracing::error!(error_msg);
panic!("{}", error_msg);
}
if config.meta.checkpoint_read_max_in_flight_chunks == 0 {
let error_msg = "`checkpoint_read_max_in_flight_chunks` must be greater than 0";
tracing::error!(error_msg);
panic!("{}", error_msg);
}
if config.meta.compaction_task_id_refill_capacity == 0 {
let error_msg = "`compaction_task_id_refill_capacity` must be greater than 0";
tracing::error!(error_msg);
panic!("{}", error_msg);View on GitHub (pinned to 6469eb736d)
Solutions
- Set `meta.parallelism_control_batch_size` to a positive integer (e.g. the default) in the config file.
- If the goal is to disable parallelism control, use the dedicated feature flag rather than zeroing the batch size.
- Delete the custom line to fall back to the built-in default.
Example fix
// before [meta] parallelism_control_batch_size = 0 // after [meta] parallelism_control_batch_size = 256
Defensive patterns
Strategy: validation
Validate before calling
assert!(cfg.meta.parallelism_control_batch_size > 0, "parallelism_control_batch_size must be > 0");
Prevention
- Use config schema checks or `config` crate typed validation before startup.
- Never zero a batch-size knob to disable a feature; find the dedicated toggle.
- Regenerate example config after upgrades (`./risedev generate-example-config`).
When it happens
Trigger: Meta node startup (`start` -> `validate_config`) with `meta.parallelism_control_batch_size` set to 0 in the config.
Common situations: Users disabling the parallelism control feature by setting its batch size to 0, or mis-copied config files.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- `meta_leader_lease_secs` must be greater than 2
- `checkpoint_read_chunk_size` must be greater than 0
- `checkpoint_read_max_in_flight_chunks` must be greater than
- `compaction_task_id_refill_capacity` must be greater than 0
- `iceberg_compaction_config_refresh_interval_sec` must be gre
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/a230bad3a6b39870.
Report an issue: GitHub.