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

  1. Back off and retry with exponential backoff/jitter — this is often transient.
  2. Reduce request rate and batch size; spread writes over time.
  3. Check and raise quotas/limits (gRPC max message size, tenant quotas) where appropriate.
  4. 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

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


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)