influxdata/influxdb · warning · Error
Some resource has been exhausted
Error message
Some resource has been exhausted: {0} What it means
The `Error::ResourceExhausted` variant, wrapping a `ServerError<()>`. Raised when some resource has been exhausted — quota, rate limit, memory, or capacity — mirroring gRPC's RESOURCE_EXHAUSTED status.
Solutions
- Back off and retry with exponential backoff/jitter — this is often transient.
- Reduce request rate and batch size; spread writes over time.
- Check and raise quotas/limits (gRPC max message size, tenant quotas) where appropriate.
- Scale the server (memory/disk/instances) if exhaustion is structural.
Example fix
// before
for batch in batches { client.write(ns, batch).await?; } // as fast as possible
// after
for batch in batches {
loop {
match client.write(ns, batch.clone()).await {
Err(Error::ResourceExhausted(_)) => { tokio::time::sleep(backoff.next()).await; }
other => { other?; break; }
}
}
} Defensive patterns
Strategy: retry
Validate before calling
// throttle client-side before hitting server limits
if in_flight_requests() > MAX_CONCURRENCY { wait_for_slot().await; } Type guard
fn is_resource_exhausted(e: &Error) -> bool { matches!(e, Error::ResourceExhausted(_)) } Try / catch
match result {
Err(Error::ResourceExhausted(_)) => { backoff.sleep().await; retry_with_jitter() }
other => other,
} Prevention
- Build backoff-with-jitter retry into every write/query path from day one.
- Rate-limit and batch client-side to stay under server quotas.
- Monitor quota/limit metrics and raise them before saturation.
When it happens
Trigger: Exceeding server-side rate limits or per-tenant quotas on writes/queries; server out of memory or disk; too many concurrent requests; message payload larger than the configured gRPC max size.
Common situations: Write storms from telemetry pipelines, shared cluster quota consumed by other tenants, undersized server instances, large batch writes exceeding message size limits.
Related errors
- {0}
- Client specified an invalid argument
- Deadline expired before operation could complete
- Operation was attempted past the valid range
- Some entity that we attempted to create already exists
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/3d35b14628a4cc6b.
Report an issue: GitHub.
Appendix: source
Thrown at core/influxdb_iox_client/src/client/error.rs:87
#[error("Unknown server error: {0}")]
Unknown(ServerError<()>),
#[error("Client specified an invalid argument: {0}")]
InvalidArgument(Box<ServerError<FieldViolation>>),
#[error("Deadline expired before operation could complete: {0}")]
DeadlineExceeded(ServerError<()>),
#[error("{0}")]
NotFound(Box<ServerError<NotFound>>),
#[error("Some entity that we attempted to create already exists: {0}")]
AlreadyExists(Box<ServerError<AlreadyExists>>),
#[error("The caller does not have permission to execute the specified operation: {0}")]
PermissionDenied(ServerError<()>),
#[error("Some resource has been exhausted: {0}")]
ResourceExhausted(ServerError<()>),
#[error("The system is not in a state required for the operation's execution: {0}")]
FailedPrecondition(Box<ServerError<PreconditionViolation>>),
#[error("The operation was aborted: {0}")]
Aborted(ServerError<()>),
#[error("Operation was attempted past the valid range: {0}")]
OutOfRange(ServerError<()>),
#[error("Operation is not implemented or supported: {0}")]
Unimplemented(ServerError<()>),
#[error("Internal error: {0}")]
Internal(ServerError<()>),
#[error("The service is currently unavailable: {0}")]View on GitHub (pinned to 06200ef96b)