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
- Redesign the duration chain so each level is an integer multiple of the previous (e.g. 10m -> 60m -> 360m).
- Validate the whole chain in deployment config before applying it to the catalog.
- Update all dependent durations together when any single duration changes.
- 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
- Validate the entire duration chain before writing it to the catalog
- Change all chain levels together when adjusting any duration
- Generate durations programmatically from a base and multipliers
- Keep durations in a config file with a lint rule for divisibility
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
- gen2 duration must be an even multiple of gen1 duration…
- gen1 duration is not configured in the catalog
- Node doesn't have proper mode, expect
- too many compacted generations requested, maximum allowed…
- An unexpected error occurred in the client library
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)