nautechsystems/nautilus_trader · error
Failed to get open orders: {error_msg}
Error message
Failed to get open orders: {error_msg} What it means
request_order_status_reports fetches open orders via the Kraken Futures API and bails when the response result is not Success, propagating the exchange's error message. The adapter aborts building order status reports since the payload is invalid.
Source
Thrown at crates/adapters/kraken/src/http/futures/client.rs:1691
instrument_id: Option<InstrumentId>,
start: Option<Timestamp>,
end: Option<Timestamp>,
open_only: bool,
) -> anyhow::Result<Vec<OrderStatusReport>> {
let ts_init = self.generate_ts_init();
let mut all_reports = Vec::new();
let response = self
.inner
.get_open_orders()
.await
.map_err(|e| anyhow::anyhow!("get_open_orders failed: {e}"))?;
if response.result != KrakenApiResult::Success {
let error_msg = response
.error
.unwrap_or_else(|| "Unknown error".to_string());
anyhow::bail!("Failed to get open orders: {error_msg}");
}
let position_sizes = if response
.open_orders
.iter()
.any(|order| order.unfilled_size.is_none())
{
match self.inner.get_open_positions().await {
Ok(response) if response.result == KrakenApiResult::Success => response
.open_positions
.into_iter()
.map(|position| (position.symbol, position.size))
.collect::<AHashMap<_, _>>(),
Ok(response) => {
let error = response
.error
.unwrap_or_else(|| "Unknown error".to_string());
log::warn!("Failed to get open positions for order quantities: {error}");View on GitHub (pinned to 18893faf8b)
Solutions
- Inspect the wrapped {error_msg} to identify the exchange-side cause.
- Ensure the futures API key has order-read permissions.
- Check local clock sync (nonce invalidations) and retry with backoff.
Defensive patterns
Strategy: try-catch
Try / catch
match adapter.request_order_status_reports(None).await {
Ok(reports) => process(reports),
Err(e) => log::error!("open orders fetch failed: {e}"), // read embedded exchange error
} Prevention
- Grant the API key open-orders read scope.
- Keep clocks NTP-synced to avoid nonce rejections.
- Avoid polling during known Kraken maintenance windows.
When it happens
Trigger: Calling request_order_status_reports when get_open_orders returns a non-Success result — bad signature, invalid nonce, insufficient key permissions, or exchange error.
Common situations: API key lacking 'open orders' read scope, clock drift causing nonce errors, or querying during exchange downtime.
Related errors
- Failed to get futures accounts: {error_msg}
- Failed to get fills: {error_msg}
- Failed to get open positions: {error_msg}
- get_open_orders failed: {e}
- get_order_events failed: {e}
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/237be177e7e52fe7.
Report an issue: GitHub.