risingwavelabs/risingwave · critical

`checkpoint_read_chunk_size` must be greater than 0

Error message

`checkpoint_read_chunk_size` must be greater than 0

What it means

validate_config in src/meta/node/src/lib.rs:632 panics when `config.meta.checkpoint_read_chunk_size` is 0. This value is the per-chunk size for checkpoint read operations from the hummock snapshot; zero-sized chunks are invalid and would stall or break checkpoint reads.

Source

Thrown at src/meta/node/src/lib.rs:632

}

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);
    }

    if config.meta.iceberg_compaction_report_timeout_sec == 0 {
        let error_msg = "`iceberg_compaction_report_timeout_sec` must be greater than 0";
        tracing::error!(error_msg);
        panic!("{}", error_msg);

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Set `meta.checkpoint_read_chunk_size` to a positive value in the config file.
  2. Remove the override so the default chunk size is applied.
  3. If you changed it for checkpoint performance, re-tune with a non-zero value (e.g. several MB) and benchmark.

Example fix

// before
[meta]
checkpoint_read_chunk_size = 0

// after
[meta]
checkpoint_read_chunk_size = 8388608
Defensive patterns

Strategy: validation

Validate before calling

assert!(cfg.meta.checkpoint_read_chunk_size > 0, "checkpoint_read_chunk_size must be > 0");

Prevention

When it happens

Trigger: Meta node startup with `meta.checkpoint_read_chunk_size` set to 0 in the config.

Common situations: Hand-tuned hummock checkpoint configs, editing example.toml carelessly, or env-var overrides resolving to 0.

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/934eaaaf01e74765. Report an issue: GitHub.