{"record":{"id":"5887cb45a58bba7c","repo":"nautechsystems/nautilus_trader","slug":"ambiguous-order-list-submit-failure-awaiting-reco","errorCode":null,"errorMessage":"Ambiguous order-list submit failure, awaiting reconciliation: {e}","messagePattern":"Ambiguous order-list submit failure, awaiting reconciliation: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"warning","filePath":"crates/adapters/binance/src/futures/execution.rs","lineNumber":3220,"sourceCode":"                                    account_id,\n                                    format!(\n                                        \"submit-order-list-error: code={}, msg={}\",\n                                        error.code, error.msg\n                                    )\n                                    .into(),\n                                    UUID4::new(),\n                                    ts_now,\n                                    ts_now,\n                                    false,\n                                    false,\n                                );\n                                emitter.send_order_event(OrderEventAny::Rejected(rejected));\n                            }\n                        }\n                    }\n                }\n                Err(e) => {\n                    let e = anyhow::Error::new(e);\n\n                    if is_ambiguous_submit_error(&e) {\n                        log::warn!(\n                            \"Ambiguous order-list submit failure, awaiting reconciliation: {e}\"\n                        );\n                    } else if is_structured_venue_rejection(&e) {\n                        let ts_now = clock.get_time_ns();\n                        let due_post_only = classify_submit_order_error(&e);\n\n                        for order in &orders {\n                            let rejected = OrderRejected::new(\n                                trader_id,\n                                order.strategy_id(),\n                                order.instrument_id(),\n                                order.client_order_id(),\n                                account_id,\n                                format!(\"submit-order-list-error: {e}\").into(),\n                                UUID4::new(),","sourceCodeStart":3202,"sourceCodeEnd":3238,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/binance/src/futures/execution.rs#L3202-L3238","documentation":"This warning is logged when an order-list submit to Binance Futures fails with an error that cannot be classified as a definitive venue rejection or a definitive local failure (per is_ambiguous_submit_error). Because the adapter cannot know whether the order list actually reached Binance, it treats the outcome as unknown and waits for exchange reconciliation (order status updates) to determine final state instead of emitting a local reject, which avoids double-cancelling or misreporting live orders.","triggerScenarios":"Calling submit order-list on the Binance Futures execution client when the HTTP/WebSocket submit returns a timeout, connection reset, or an unrecognized error payload that is neither a structured venue rejection nor a known local failure.","commonSituations":"Network instability or Binance API latency causing request timeouts during volatile markets; rate-limit disconnects mid-submit; Binance returning an unexpected error body after a schema/API version change; proxy or VPN dropping the connection between request send and response read.","solutions":["Wait for the reconciliation pass to report the actual order state before taking action; do not resubmit immediately to avoid duplicate orders","Check network connectivity and latency to Binance endpoints (and any proxy) that caused the ambiguous failure","Verify the adapter and Binance API schema versions match; update nautilus_binance if Binance added new error codes","Enable debug logging around is_ambiguous_submit_error to capture the raw error and classify it explicitly","Retry the submit only after confirming via reconciliation or order query that the original list was not accepted"],"exampleFix":"// before: blindly resubmitting on any submit error\nmatch client.submit_order_list(list).await {\n    Err(e) => client.submit_order_list(list).await?, // may duplicate orders\n    ok => ok?,\n}\n// after: wait for reconciliation on ambiguous errors\nmatch client.submit_order_list(list).await {\n    Err(e) if is_ambiguous_submit_error(&anyhow::Error::new(e)) => {\n        log::warn!(\"Ambiguous submit, awaiting reconciliation\");\n        // reconcile: query open orders / listen for order-update events\n    }\n    other => other?,\n}","handlingStrategy":"try-catch","validationCode":"// Check connectivity/classifiability before submitting orders\nif !client.is_connected() {\n    log::warn!(\"Binance Futures client not connected; deferring order-list submit\");\n    return;\n}","typeGuard":"fn is_definitive_failure(e: &anyhow::Error) -> bool {\n    is_structured_venue_rejection(e) || !is_ambiguous_submit_error(e)\n}","tryCatchPattern":"match client.submit_order_list(list).await {\n    Err(e) => {\n        let e = anyhow::Error::new(e);\n        if is_ambiguous_submit_error(&e) {\n            log::warn!(\"Ambiguous submit; awaiting reconciliation: {e}\");\n            // do NOT resubmit; rely on order-status reconciliation\n        } else {\n            return Err(e);\n        }\n    }\n    Ok(v) => Ok(v),\n}","preventionTips":["Never immediately resubmit orders after an unclassified submit failure","Run reconciliation or query open orders after ambiguous failures","Keep the adapter updated for new Binance error codes","Monitor network stability/latency to Binance endpoints"],"tags":["network","order-submission","reconciliation","binance"],"backgroundTag":"ambiguous-order-submit-error","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"}