{"record":{"id":"f8682b3842948a75","repo":"rustfs/rustfs","slug":"unknown-backup-manifest-format-version-found-th","errorCode":null,"errorMessage":"unknown backup manifest format version {found} (this build supports version {supported})","messagePattern":"unknown backup manifest format version (.+?) \\(this build supports version (.+?)\\)","errorType":"exception","errorClass":"BackupError","httpStatus":null,"severity":"error","filePath":"crates/kms/src/backup/error.rs","lineNumber":39,"sourceCode":"/// Every variant is a fail-closed condition: a restore surface observing any\n/// of them must abort before touching target state. Messages carry only\n/// identifiers (backup ids, KEK ids, artifact kinds and paths) — never key\n/// material, bundle plaintext, or credentials.\n#[derive(Error, Debug, Clone, PartialEq, Eq)]\npub enum BackupError {\n    /// Manifest or bundle content fails structural, schema, or integrity\n    /// validation (unknown fields, duplicate fields, digest mismatch,\n    /// contradictory responsibility declarations, ...).\n    #[error(\"backup bundle corrupted: {reason}\")]\n    Corrupted { reason: String },\n\n    /// Input ended before a complete manifest could be decoded.\n    #[error(\"backup manifest truncated: {reason}\")]\n    Truncated { reason: String },\n\n    /// Manifest declares a format version this build does not understand.\n    /// Unknown versions are always rejected; there is no best-effort read.\n    #[error(\"unknown backup manifest format version {found} (this build supports version {supported})\")]\n    UnknownVersion { found: u32, supported: u32 },\n\n    /// Bundle is protected by a different backup KEK than the one supplied.\n    #[error(\n        \"backup bundle requires KEK '{required_kek_id}' version {required_kek_version}; \\\n         supplied KEK '{supplied_kek_id}' version {supplied_kek_version} cannot open it\"\n    )]\n    WrongKek {\n        required_kek_id: String,\n        required_kek_version: u32,\n        supplied_kek_id: String,\n        supplied_kek_version: u32,\n    },\n\n    /// A bundled key record declares a format version this build does not\n    /// understand.\n    #[error(\"bundled key record '{key_id}' declares unsupported format version {version}; this build cannot restore it\")]\n    UnsupportedFormatVersion { key_id: String, version: String },","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/rustfs/rustfs/blob/35af688cd9d41b4346fbe27dcf7250ba72046c1f/crates/kms/src/backup/error.rs#L21-L57","documentation":"BackupError version guard meaning the manifest declares a format version this build does not understand (found > supported). There is deliberately no best-effort read of unknown versions; restore aborts fail-closed. The values are the bundle's declared version and this build's maximum supported version, telling the operator to upgrade RustFS/KMS before restoring this bundle.","triggerScenarios":"Thrown at crates/kms/src/backup/error.rs:39 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Upgrade to a build supporting the manifest version","Restore with the software generation that wrote the backup"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"35af688cd9d41b4346fbe27dcf7250ba72046c1f","analyzedAt":"2026-08-20T21:57:04.799Z","contentChangedAt":"2026-08-20T21:57:04.799Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}