{"record":{"id":"2ee4ed755b109dcb","repo":"nautechsystems/nautilus_trader","slug":"execution-payload-protocol-version-is-not-suppo","errorCode":null,"errorMessage":"Execution payload protocol version {} is not supported","messagePattern":"Execution payload protocol version (.+?) is not supported","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/cache/database.rs","lineNumber":7484,"sourceCode":"    }\n}\n\nfn execution_payload_state_from_row(\n    row: &sqlx::postgres::PgRow,\n) -> anyhow::Result<ExecutionPayloadState> {\n    Ok(ExecutionPayloadState {\n        deployment_id: row.try_get(\"deployment_id\")?,\n        protocol_version: row.try_get(\"protocol_version\")?,\n        operation: row.try_get(\"operation\")?,\n        active_key_id: row.try_get(\"active_key_id\")?,\n    })\n}\n\nfn validate_execution_payload_state(\n    state: &ExecutionPayloadState,\n    keys: &PayloadKeySet,\n) -> anyhow::Result<()> {\n    anyhow::ensure!(\n        state.protocol_version == EXECUTION_PAYLOAD_PROTOCOL_VERSION,\n        \"Execution payload protocol version {} is not supported\",\n        state.protocol_version\n    );\n    anyhow::ensure!(\n        state.deployment_id == keys.deployment_id(),\n        \"Execution payload deployment ID does not match this database\"\n    );\n    anyhow::ensure!(\n        state.active_key_id.as_slice() == keys.active_key_id(),\n        \"Configured active payload key does not match the database active key\"\n    );\n    Ok(())\n}\n\nasync fn lock_execution_payload_operation(\n    transaction: &mut Transaction<'_, Postgres>,\n) -> anyhow::Result<()> {","sourceCodeStart":7466,"sourceCodeEnd":7502,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/cache/database.rs#L7466-L7502","documentation":"This ensure! check validates that a deserialized ExecutionPayloadState row was written with the same EXECUTION_PAYLOAD_PROTOCOL_VERSION the current code supports. A payload stored by a newer (or older, unsupported) schema version of the software cannot be safely decoded, so the load is refused.","triggerScenarios":"Loading an execution payload row whose stored protocol_version differs from EXECUTION_PAYLOAD_PROTOCOL_VERSION — typically after rolling back to an older build or pointing the cache at a database written by a newer release.","commonSituations":"Downgrading the binary while keeping an existing cache database; sharing one Postgres cache between nodes running different versions; restoring a snapshot from another deployment.","solutions":["Run the binary version that wrote the payload, or upgrade to a version matching the stored protocol_version","Migrate or rebuild the cache database so payloads are stored with the supported protocol version","Point the node at a cache database created by the same software version"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if stored.protocol_version != EXECUTION_PAYLOAD_PROTOCOL_VERSION {\n    return Err(format!(\"payload written by incompatible version (protocol {})\", stored.protocol_version));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep software versions and the cache database version-aligned","Never share one cache database across different node versions","Check the release notes for protocol version changes before upgrading or downgrading"],"tags":["database","versioning","rust","compatibility"],"backgroundTag":"unsupported-config-value","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}