influxdata/influxdb · error · EnterpriseCatalogError

each subsequent generation must be an even multiple of its…

Error message

each subsequent generation must be an even multiple of its predecessor

What it means

EnterpriseCatalogError::MisalignedGenerations. Raised when the full generation-duration chain (gen1, gen2, gen3, ...) is not strictly nested: each generation duration must be an even multiple of the previous one. This generalizes the gen2 check to the whole chain.

Solutions

  1. Redesign the duration chain so each level is an integer multiple of the previous (e.g. 10m -> 60m -> 360m).
  2. Validate the whole chain in deployment config before applying it to the catalog.
  3. Update all dependent durations together when any single duration changes.
  4. Add a preflight script asserting durations[i+1] % durations[i] == 0 for all i.

Example fix

// before
gen_durations = [10m, 60m, 100m]  // 100 % 60 != 0
// after
gen_durations = [10m, 60m, 360m]  // each an even multiple of its predecessor
Defensive patterns

Strategy: validation

Validate before calling

fn generations_aligned(durs: &[u64]) -> bool {
    durs.windows(2).all(|w| w[1] % w[0] == 0)
}
// call before applying any duration chain

Try / catch

match result {
    Err(EnterpriseCatalogError::MisalignedGenerations) =>
        eprintln!("each generation duration must be an even multiple of its predecessor"),
    other => other?,
}

Prevention

When it happens

Trigger: Configuring three or more generation durations where a later duration is not an even multiple of its predecessor — e.g. gen1=10m, gen2=60m, gen3=100m (100 not a multiple of 60).

Common situations: Hand-editing generation duration lists; partial config updates that change one duration but not its successor; automation generating durations from independent knobs.

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 influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/3a6d7e2d7d8f3283. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_catalog/src/error/enterprise.rs:52

    #[error(
        "too many compacted generations requested, maximum allowed: 254, requested: {requested}"
    )]
    TooManyCompactedGenerations { requested: usize },

    #[error("gen1 duration is not configured in the catalog")]
    MissingGen1Duration,

    #[error(
        "gen2 duration must be an even multiple of gen1 duration, \
        provided gen2 duration: {gen2_duration_secs} seconds, \
        existing gen1 duration: {gen1_duration_secs} seconds"
    )]
    InvalidGen2Duration {
        gen2_duration_secs: u64,
        gen1_duration_secs: u64,
    },

    #[error("each subsequent generation must be an even multiple of its predecessor")]
    MisalignedGenerations,
}

View on GitHub (pinned to 06200ef96b)