{"record":{"id":"06dd60aa2725b4ec","repo":"influxdata/influxdb","slug":"this-node-s-feature-level-core-enterprise-is-below-the","errorCode":null,"errorMessage":"this node's feature level (core={}, enterprise={}) is below the cluster's committed level (core={}, enterprise={}); upgrade required","messagePattern":"this node's feature level \\(core=(.+?), enterprise=(.+?)\\) is below the cluster's committed level \\(core=(.+?), enterprise=(.+?)\\); upgrade required","errorType":"error_code","errorClass":"CatalogError","httpStatus":null,"severity":"critical","filePath":"influxdb3_catalog/src/error.rs","lineNumber":356,"sourceCode":"\n    #[error(\"cannot add column {name} because it already exists with type {existing}\")]\n    DuplicateColumn {\n        name: Arc<str>,\n        existing: InfluxColumnType,\n    },\n\n    #[error(\n        \"record id {record_id} exceeds the cluster's committed feature level (core={}, enterprise={}); \\\n        the cluster must finish upgrading before this operation is available\",\n        committed.core,\n        committed.enterprise,\n    )]\n    RecordExceedsCommittedFeatureLevel {\n        record_id: u16,\n        committed: FeatureLevel,\n    },\n\n    #[error(\n        \"this node's feature level (core={}, enterprise={}) is below the cluster's committed level (core={}, enterprise={}); upgrade required\",\n        local.core,\n        local.enterprise,\n        committed.core,\n        committed.enterprise,\n    )]\n    NodeBelowCommittedFeatureLevel {\n        committed: FeatureLevel,\n        local: FeatureLevel,\n    },\n\n    #[error(\"missing object store for restore operation\")]\n    MissingObjectStoreForRestore,\n\n    #[error(\n        \"cannot remove node '{node_id}' because it is a member of query group '{query_group_name}' (id {query_group_id})\"\n    )]\n    NodeInQueryGroup {","sourceCodeStart":338,"sourceCodeEnd":374,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/error.rs#L338-L374","documentation":"Thrown when a node's own supported feature level (core/enterprise pair) is lower than the feature level the cluster has already committed to. The cluster has advanced past what this node's binary understands, so the node must not join or serve until upgraded.","triggerScenarios":"Starting a node with an older binary against a catalog whose committed FeatureLevel is higher; a downgrade followed by reconnect to an upgraded cluster; applying catalog snapshots from newer versions to older nodes.","commonSituations":"Rolling upgrade where an old replica restarts; Kubernetes rolling deploy misconfigured to run the previous image; restoring a newer catalog backup onto an older installation.","solutions":["Upgrade the node's binary to a version whose feature level is >= the committed level.","Verify image/version configuration so deployments do not roll back to older versions.","If a downgrade is intentional, it is unsupported once the committed level advanced; restore a catalog from before the upgrade instead.","Check core vs enterprise editions match the cluster's committed level."],"exampleFix":"// before\n// node starts with old binary against upgraded catalog\n// after\nlet committed = catalog.committed_feature_level();\nif local.feature_level() < committed {\n    return Err(\"upgrade node binary before joining cluster\".into());\n}","handlingStrategy":"validation","validationCode":"if local.feature_level() < catalog.committed_feature_level() {\n    return Err(\"node binary too old for committed cluster feature level\".into());\n}","typeGuard":null,"tryCatchPattern":"match result {\n    Err(CatalogError::NodeBelowCommittedFeatureLevel { committed, local }) => {\n        log::error!(\"upgrade required: local={local:?} committed={committed:?}\");\n    }\n    other => other?,\n}","preventionTips":["Pin all node images to the same version in deployments","Check feature level at startup before joining","Restore backups only onto same-or-newer installations"],"tags":["upgrade","feature-level","versioning"],"backgroundTag":"incompatible-source-type","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}