nautechsystems/nautilus_trader · error
Startup reconciliation timeout reached
Error message
Startup reconciliation timeout reached
What it means
Startup watchdog in perform_startup_reconciliation: per-client reconciliation did not complete within the configured timeout_reconciliation duration, so startup is aborted rather than continuing with unreconciled execution state.
Source
Thrown at crates/live/src/node/mod.rs:867
log_info!(
"Starting execution state reconciliation...",
color = LogColor::Blue
);
let lookback_mins = self
.config
.exec_engine
.reconciliation_lookback_mins
.map(u64::from);
let timeout = self.config.timeout_reconciliation;
let start = dst::time::Instant::now();
let client_ids = self.kernel.exec_engine.borrow().client_ids();
for client_id in client_ids {
let elapsed = start.elapsed();
if elapsed >= timeout {
anyhow::bail!("Startup reconciliation timeout reached");
}
let remaining = timeout
.checked_sub(elapsed)
.expect("elapsed checked against reconciliation timeout");
log_info!(
"Requesting mass status from {}...",
client_id,
color = LogColor::Blue
);
let mass_status_result = dst::time::timeout(remaining, async {
self.kernel
.exec_engine
.borrow_mut()
.generate_mass_status(&client_id, lookback_mins)
.await
})View on GitHub (pinned to 18893faf8b)
Solutions
- Increase timeout_reconciliation in the node config
- Investigate slow venue responses or network latency for the offending client
- Reduce reconciliation_lookback_mins to shrink the reconciliation workload
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/live/src/node/mod.rs:867 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/b6d7dccc7ca73eb9.
Report an issue: GitHub.