influxdata/influxdb · error · Error

Operation is not implemented or supported

Error message

Operation is not implemented or supported: {0}

What it means

This variant of influxdb_iox_client::client::Error wraps a gRPC/tonic Status whose code is UNIMPLEMENTED, mapping the server-side status into a Rust error via the thiserror message "Operation is not implemented or supported: {0}". It means the IOx server (or an intermediary proxy) received a request for an RPC or feature it does not implement or has explicitly disabled. It is produced by the From<Status> conversion in the same file, not thrown ad hoc by client code.

Solutions

  1. Check the server version and upgrade influxdb_iox_client (or the server) so client and server API versions match.
  2. Log the wrapped ServerError payload (use the Display of the inner ServerError<()>) to confirm which RPC the server rejected as unimplemented.
  3. Verify no proxy/gRPC-Web gateway is rewriting or blocking the method path.
  4. If the RPC is gated behind a server feature flag, enable that feature or choose an alternative API.

Example fix

// before: blanket match on any error
match client.some_rpc(req).await {
    Ok(resp) => /* ... */,
    Err(_) => return Err(anyhow!("rpc failed")),
}
// after: surface the unimplemented variant explicitly
match client.some_rpc(req).await {
    Ok(resp) => /* ... */,
    Err(Error::Unimplemented(server_err)) => {
        eprintln!("server does not implement this RPC: {server_err}");
        // fall back to a supported RPC or upgrade the server
    }
    Err(e) => return Err(e.into()),
}
Defensive patterns

Strategy: try-catch

Validate before calling

// check server/endpoint capability before calling exotic RPCs
assert!(!endpoint.is_empty(), "endpoint required");
// verify server supports the RPC via its health/version service first
let version = client.version().await?;

Type guard

fn is_unimplemented(e: &client::Error) -> bool {
    matches!(e, client::Error::Unimplemented(_))
}

Try / catch

match res {
    Err(Error::Unimplemented(se)) => fallback_to_supported_rpc(se),
    Err(e) => return Err(e.into()),
    Ok(v) => Ok(v),
}

Prevention

When it happens

Trigger: Calling an IOx Flight/gRPC RPC that the connected server version does not implement; hitting an endpoint behind a proxy that strips or lacks support for the method; server built without an optional feature that owns the RPC.

Common situations: Pointing an older influxdb_iox_client at a newer server API (or vice versa) so method names/paths no longer match; load balancers routing to backends without the RPC; misconfigured namespace/service where the handler is not registered.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/363d65b3a8bd0d7b. Report an issue: GitHub.

Appendix: source

Thrown at core/influxdb_iox_client/src/client/error.rs:99

    #[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}")]
    Unavailable(ServerError<()>),

    #[error("Unrecoverable data loss or corruption: {0}")]
    DataLoss(ServerError<()>),

    #[error("The request does not have valid authentication credentials: {0}")]
    Unauthenticated(ServerError<()>),

    #[error("Received an invalid response from the server: {0}")]
    InvalidResponse(#[from] FieldViolation),

    #[error("An unexpected error occurred in the client library: {0}")]

View on GitHub (pinned to 06200ef96b)