influxdata/influxdb · critical · Error
Error initializing tokio runtime
Error message
Error initializing tokio runtime: {0} What it means
A serve-command `Error` variant (`TokioRuntime`) carrying a `std::io::Error` as its source. It is raised when constructing the tokio async runtime for the server fails, which on most platforms means the runtime could not be created due to an OS-level error (e.g. resource limits blocking the reactor/worker setup).
Solutions
- Read the `#[source]` io::Error for the OS cause (errno) and fix that resource limit.
- Raise file-descriptor/thread limits (ulimit -n, container limits).
- Retry after freeing system resources or adjusting runtime worker count.
Example fix
// before # docker run --limit nofile... (too low) // after ulimit -n 65536 influxdb3 serve ...
Defensive patterns
Strategy: try-catch
Validate before calling
// Check headroom for runtime resources before launching let fd_soft = rlimit::getrlimit(rlimit::Resource::NOFILE)?.0; assert!(fd_soft > 1024, "file descriptor limit too low for tokio runtime");
Try / catch
match serve(config) {
Err(serve::Error::TokioRuntime(io)) => {
eprintln!("runtime init failed: {} (check ulimits/containers)", io);
std::process::exit(1);
}
other => other?,
} Prevention
- Raise nofile/thread ulimits in containers and systemd units
- Avoid running under extremely restrictive sandbox profiles
- Monitor OS resource pressure before server startup
When it happens
Trigger: Calling `tokio::runtime::Runtime::new()`/Builder::build() during `influxdb3 serve` startup when the OS returns an io::Error (e.g. insufficient resources, failure creating event queues).
Common situations: Running under strict RLIMITs, containers with very low thread/file-descriptor limits, exotic environments where tokio cannot set up its I/O driver.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- blocking task join
- failed to initialize catalog
- failed to initialize distinct cache
- failed to initialize last cache
- failed to initialize write buffer
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/2cdbf589999f74cd.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3/src/commands/serve.rs:123
pub const DEFAULT_ADMIN_TOKEN_RECOVERY_BIND_ADDR: &str = "127.0.0.1:8182";
pub const DEFAULT_TELEMETRY_ENDPOINT: &str = "https://telemetry.v3.influxdata.com";
const MIN_SNAPSHOTS_TO_LOAD_ON_START: u64 = 100;
mod cli_params;
#[cfg(test)]
mod tests;
#[derive(Debug, Error)]
pub enum Error {
#[error("Cannot parse object store config: {0}")]
ObjectStoreParsing(#[from] influxdb3_clap_blocks::object_store::ParseError),
#[error("Tracing config error: {0}")]
TracingConfig(#[from] trace_exporters::Error),
#[error("Error initializing tokio runtime: {0}")]
TokioRuntime(#[source] std::io::Error),
#[error("Failed to bind address")]
BindAddress(#[source] std::io::Error),
#[error("Server error: {0}")]
Server(#[source] influxdb3_server::Error),
#[error("Token error: {0}")]
TokenError(CatalogError),
#[error("Write buffer error: {0}")]
WriteBuffer(#[from] influxdb3_write::write_buffer::Error),
#[error("invalid token: {0}")]
InvalidToken(#[from] hex::FromHexError),
#[error("failed to initialize write buffer: {0:?}")]View on GitHub (pinned to 06200ef96b)