{"record":{"id":"b66df9a5e2c07ae9","repo":"nautechsystems/nautilus_trader","slug":"responsible-execution-client-is-unavailable","errorCode":null,"errorMessage":"responsible execution client is unavailable","messagePattern":"responsible execution client is unavailable","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/live/src/execution/manager.rs","lineNumber":4916,"sourceCode":"                    \"Cannot project reconciliation snapshot event for {}: {e}\",\n                    order.client_order_id()\n                );\n                break;\n            }\n            events.push(event);\n        }\n\n        events\n    }\n\n    fn resolve_inferred_fill_commission(\n        client: Option<&dyn ExecutionClient>,\n        instrument: &InstrumentAny,\n        fill_qty: Quantity,\n        price_and_liquidity: Option<(Price, LiquiditySide)>,\n    ) -> anyhow::Result<Option<Money>> {\n        let Some(client) = client else {\n            anyhow::bail!(\"responsible execution client is unavailable\");\n        };\n        let Some((last_px, liquidity_side)) = price_and_liquidity else {\n            return Ok(None);\n        };\n\n        client.calculate_commission(instrument, fill_qty, last_px, liquidity_side)\n    }\n\n    #[expect(clippy::too_many_arguments)]\n    fn handle_external_order(\n        &self,\n        report: &OrderStatusReport,\n        account_id: AccountId,\n        instrument: &InstrumentAny,\n        fills: &[&FillReport],\n        is_synthetic: bool,\n        fill_queue: Option<&mut ReconciliationFillQueue>,\n        commission_client: Option<&dyn ExecutionClient>,","sourceCodeStart":4898,"sourceCodeEnd":4934,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/live/src/execution/manager.rs#L4898-L4934","documentation":"Raised when calculating commission for a fill but no responsible execution `ExecutionClient` was supplied. Commission depends on the venue client's `calculate_commission`; without a client the manager cannot price the commission and bails instead of returning a fabricated value.","triggerScenarios":"The live execution manager processes a fill whose responsible client lookup failed or was not configured (e.g. an external/OWNED order fill with no matching execution client registered), then calls this helper with `client: None`.","commonSituations":"Missing or misconfigured execution client for the venue (client factory not registered, routing not configured); fills for orders not managed by any client; adapter reconnects where the client was dropped.","solutions":["Register and configure the execution client for the venue so fills resolve to a responsible client.","Check exec client routing config so the order/fill maps to the correct client.","Verify the client was not dropped after disconnect; inspect earlier logs for client registration failures."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// before processing fills, ensure an exec client is registered for the venue\nlet client = node.exec_client_for_venue(&venue);\nif client.is_none() {\n    log::warn!(\"no execution client registered for {venue}; commission will fail\");\n}","typeGuard":null,"tryCatchPattern":"match calculate_fill_commission(client, instrument, fill_qty, price_and_liquidity) {\n    Err(e) if e.to_string().contains(\"responsible execution client is unavailable\") => {\n        // fall back: skip commission calc and alert on missing client config\n    }\n    other => other?,\n}","preventionTips":["Register an execution client for every venue that can produce fills.","Verify exec client routing configuration during node startup.","Watch startup logs for client registration failures before going live."],"tags":["execution-engine","configuration","commission","rust"],"backgroundTag":"missing-required-argument","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}