{"record":{"id":"e9b36c9628a0f1a4","repo":"nautechsystems/nautilus_trader","slug":"message","errorCode":null,"errorMessage":"{message}","messagePattern":"\\{message\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/execution/client.rs","lineNumber":2208,"sourceCode":"                    verify_finalized_transaction(\n                        &included,\n                        &intent,\n                        prepared.nonce,\n                        &prepared.raw_tx,\n                        self,\n                        purpose.as_str(),\n                    )\n                    .await?,\n                );\n                self.commit_verified_finality(&included, TransactionStatus::Reverted, &[])\n                    .await?;\n                self.database\n                    .mark_execution_event_emitted(prepared.intent_id, \"terminal\")\n                    .await?;\n                self.release_slot();\n                anyhow::bail!(\"Transaction {} reverted on-chain\", included.tx_hash)\n            }\n            InclusionOutcome::Pending(message) => anyhow::bail!(message),\n        }\n    }\n\n    /// Claims the single in-flight slot before any preparation RPC call, so the `pending`\n    /// nonce read stays authoritative: a second transaction is rejected before it can sign.\n    fn claim_slot(&self, purpose: TransactionPurpose) -> anyhow::Result<()> {\n        let mut slot = self.in_flight.lock();\n        if let Some(in_flight) = *slot {\n            return Err(in_flight_limit_error(&in_flight));\n        }\n        *slot = Some(InFlightSlot::Preparing(purpose));\n        Ok(())\n    }\n\n    /// Runs the read-only pre-signing pipeline: chain ID verification, nonce selection, fee\n    /// and gas policy checks, transaction building, and local signing.\n    #[expect(\n        clippy::too_many_arguments,","sourceCodeStart":2190,"sourceCodeEnd":2226,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/execution/client.rs#L2190-L2226","documentation":"This is the pending-inclusion bail: when awaiting inclusion the outcome is InclusionOutcome::Pending(message), meaning the transaction has not been included within the expected window. The pending reason message is propagated verbatim as the error so the caller knows why inclusion is still pending.","triggerScenarios":"After submitting, the inclusion watcher returns Pending — e.g. the transaction is stuck in the mempool, its gas price is too low, or it was replaced/dropped and the watcher timed out.","commonSituations":"Gas price set too low during network congestion; nonce reuse or replacement by another transaction with the same nonce; RPC node not propagating the transaction; inclusion timeout configured too short.","solutions":["Read the propagated message to see the pending reason, then resubmit with a higher gas price if stuck","Verify the nonce was not consumed or replaced by another transaction","Check transaction hash on a block explorer to confirm mempool status","Increase the inclusion wait timeout or resubmit with speed-up pricing"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Confirm nonce is free and gas is competitive before submitting\nlet pending_nonce = client.pending_nonce(signer).await?;\nlet gas = client.suggest_gas_price().await?;\nanyhow::ensure!(next_nonce == pending_nonce, \"nonce mismatch; resync\");","typeGuard":null,"tryCatchPattern":"match res {\n    Err(pending_msg) => {\n        // resubmit same nonce with +10-20% gas (speed-up) or cancel\n        client.resubmit_with_bump(tx_hash, 1.15).await?;\n    }\n    Ok(r) => r,\n}","preventionTips":["Track nonce usage centrally to avoid collisions/replacements","Price gas from live network data, not static config","Set inclusion timeouts generously under congested conditions"],"tags":["pending","mempool","transaction","timeout"],"backgroundTag":"request-timeout","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"}