{"record":{"id":"44bdac4a1fbda08c","repo":"nautechsystems/nautilus_trader","slug":"get-open-orders-failed-e","errorCode":null,"errorMessage":"get_open_orders failed: {e}","messagePattern":"get_open_orders failed: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/kraken/src/http/futures/client.rs","lineNumber":1685,"sourceCode":"        ))\n    }\n\n    pub async fn request_order_status_reports(\n        &self,\n        account_id: AccountId,\n        instrument_id: Option<InstrumentId>,\n        start: Option<Timestamp>,\n        end: Option<Timestamp>,\n        open_only: bool,\n    ) -> anyhow::Result<Vec<OrderStatusReport>> {\n        let ts_init = self.generate_ts_init();\n        let mut all_reports = Vec::new();\n\n        let response = self\n            .inner\n            .get_open_orders()\n            .await\n            .map_err(|e| anyhow::anyhow!(\"get_open_orders failed: {e}\"))?;\n\n        if response.result != KrakenApiResult::Success {\n            let error_msg = response\n                .error\n                .unwrap_or_else(|| \"Unknown error\".to_string());\n            anyhow::bail!(\"Failed to get open orders: {error_msg}\");\n        }\n\n        let position_sizes = if response\n            .open_orders\n            .iter()\n            .any(|order| order.unfilled_size.is_none())\n        {\n            match self.inner.get_open_positions().await {\n                Ok(response) if response.result == KrakenApiResult::Success => response\n                    .open_positions\n                    .into_iter()\n                    .map(|position| (position.symbol, position.size))","sourceCodeStart":1667,"sourceCodeEnd":1703,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/kraken/src/http/futures/client.rs#L1667-L1703","documentation":"Wraps a failure of the low-level get_open_orders HTTP call made while collecting order status reports for the Kraken Futures adapter. The underlying request itself failed (network, auth signing, transport), distinct from an API-level error which is reported separately as 'Failed to get open orders'.","triggerScenarios":"request_order_status_reports polling loop invokes inner.get_open_orders() and the request errors — connection failure, timeout, request-signing failure, or rate-limiter shutdown.","commonSituations":"Network outages or DNS failures on a live node; invalid/expired API credentials failing HMAC signing; proxy misconfiguration; polling during shutdown when the cancellation token has fired.","solutions":["Read the wrapped error to see if it's network, auth, or rate limiting.","Verify Kraken Futures API credentials are correct and have the right permissions.","Check connectivity/proxy settings and Kraken API status.","Retry the polling cycle; the adapter's retry manager may already handle transient failures."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"match client.request_order_status_reports(...).await {\n    Ok(reports) => reports,\n    Err(e) if is_transient(&e) => { tokio::time::sleep(backoff).await; retry(); }\n    Err(e) => return Err(anyhow!(\"order status poll failed permanently: {e:#}\")),\n}","preventionTips":["Keep credentials valid and rotated; signing failures surface here.","Monitor connectivity/proxy health on live nodes.","Rely on the adapter's retry manager; don't disable it for polling loops.","Gracefully handle shutdown so polls don't race the cancellation token."],"tags":["http","network","kraken","futures","orders"],"backgroundTag":"api-request-failed","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"}