{"record":{"id":"52e8a5ed7c3e9b9e","repo":"nautechsystems/nautilus_trader","slug":"no-order-returned-context","errorCode":null,"errorMessage":"No order returned {context}","messagePattern":"No order returned (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/bybit/src/http/client.rs","lineNumber":4869,"sourceCode":"        endpoint: &str,\n        context: &str,\n    ) -> anyhow::Result<BybitOrder> {\n        let mut query_params = BybitOpenOrdersParamsBuilder::default();\n        query_params.category(product_type);\n        query_params.order_id(order_id.to_string());\n\n        let query_params = query_params.build().build_anyhow()?;\n        let order_response: BybitOpenOrdersResponse = self\n            .inner\n            .send_request(Method::GET, endpoint, Some(&query_params), None, true)\n            .await?;\n\n        order_response\n            .result\n            .list\n            .into_iter()\n            .next()\n            .ok_or_else(|| anyhow::anyhow!(\"No order returned {context}\"))\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use rstest::rstest;\n\n    use super::*;\n\n    #[rstest]\n    fn test_client_creation() {\n        let client = BybitHttpClient::new(None, 60, 3, 1000, 10_000, 5_000, None);\n        assert!(client.is_ok());\n\n        let client = client.unwrap();\n        assert!(client.base_url().contains(\"bybit.com\"));\n        assert!(client.credential().is_none());\n    }","sourceCodeStart":4851,"sourceCodeEnd":4887,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/bybit/src/http/client.rs#L4851-L4887","documentation":"After submitting an order or querying order status, the adapter takes the first item from Bybit's `result.list`. If Bybit acknowledges the request but returns an empty list, the adapter cannot construct an order report and throws this error with extra context.","triggerScenarios":"Calling submit_order or request_order_status where the Bybit v5 response `result.list` is empty — e.g. order already filled/cancelled and purged, or wrong orderId/orderLinkId queried.","commonSituations":"Querying an orderLinkId that was never registered; racing a cancel that removed the order before the status query; symbol/account mismatch so the order isn't visible.","solutions":["Verify the orderId/orderLinkId and symbol match an existing order on that account","Poll again shortly after submission — orders may be momentarily absent from query results during high throughput","Rely on the WebSocket order stream for terminal states instead of immediate REST re-query","Check `retCode`/`retMsg` in the raw response for an upstream rejection"],"exampleFix":"// before\nlet order = order_response.result.list.into_iter().next()\n    .ok_or_else(|| anyhow::anyhow!(\"No order returned {context}\"))?;\n// after: retry once before failing\nlet order = order_response.result.list.into_iter().next()\n    .or_else(|| poll_order_once(context))\n    .ok_or_else(|| anyhow::anyhow!(\"No order returned {context}\"))?;","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"match res { Err(e) if e.to_string().contains(\"No order returned\") => {\n    tokio::time::sleep(Duration::from_millis(250)).await;\n    query_order_status_once_more(context)\n} other => other }","preventionTips":["Wait for the WebSocket order stream to confirm terminal states instead of immediate REST re-query","Keep the orderLinkId you generated so lookups are deterministic","Don't query an order after it has been cancelled and purged"],"tags":["rust","bybit","order-status","empty-response"],"backgroundTag":"empty-result-set","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"}