nautechsystems/nautilus_trader · error

Timeout waiting for account {account_id} to be registered af

Error message

Timeout waiting for account {account_id} to be registered after {timeout_secs}s

What it means

After connecting, the Kraken Futures execution client waits for its account to be generated and registered in the cache (normally via an account-state/balance update from the venue). `await_account_registered` polls the cache and bails with this timeout error if the account never appears within `timeout_secs`.

Source

Thrown at crates/adapters/kraken/src/execution/futures.rs:531

        if self.core.cache().account(&account_id).is_some() {
            log::info!("Account {account_id} registered");
            return Ok(());
        }

        let start = Instant::now();
        let timeout = Duration::from_secs_f64(timeout_secs);
        let interval = Duration::from_millis(10);

        loop {
            tokio::time::sleep(interval).await;

            if self.core.cache().account(&account_id).is_some() {
                log::info!("Account {account_id} registered");
                return Ok(());
            }

            if start.elapsed() >= timeout {
                anyhow::bail!(
                    "Timeout waiting for account {account_id} to be registered after {timeout_secs}s"
                );
            }
        }
    }

    fn modify_single_order(&self, cmd: &ModifyOrder) {
        let client_order_id = cmd.client_order_id;
        let venue_order_id = cmd.venue_order_id;
        let strategy_id = cmd.strategy_id;
        let instrument_id = cmd.instrument_id;
        let quantity = cmd.quantity;
        let price = cmd.price;

        log::debug!(
            "Modifying order: venue_order_id={venue_order_id:?}, client_order_id={client_order_id}"
        );

View on GitHub (pinned to 18893faf8b)

Solutions

  1. Verify Futures API key/secret are correct and WS authentication succeeds (check logs for auth errors)
  2. Increase the account-registration timeout in the client config
  3. Confirm the Futures account has an accessible balance and is fully provisioned on Kraken
  4. Check network/firewall access to Kraken Futures WebSocket endpoints
Defensive patterns

Strategy: retry

Try / catch

match connect_result {
    Err(e) if e.to_string().contains("Timeout waiting for account") => {
        log::warn!("account registration timed out; verifying WS auth and retrying");
        verify_ws_auth()?;
        connect_with_longer_timeout()?;
    }
    r => r?,
}

Prevention

When it happens

Trigger: `connect` on the Kraken Futures exec client where no account update arrives before the timeout — e.g. WS auth failure, no funds on the Futures account, or a stalled WebSocket connection.

Common situations: Invalid or expired Futures API keys, network/proxy blocking the WS feed, account not yet provisioned, or a too-short configured timeout on a slow connection.

Understand the failure class

Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.

Related errors


AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08). Data as JSON: /api/errors/ece57b3c7290afe8. Report an issue: GitHub.