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

  1. Set `meta.parallelism_control_batch_size` to a positive integer (e.g. the default) in the config file.
  2. If the goal is to disable parallelism control, use the dedicated feature flag rather than zeroing the batch size.
  3. 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

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


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/a230bad3a6b39870. Report an issue: GitHub.