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
- Check the server version and upgrade influxdb_iox_client (or the server) so client and server API versions match.
- Log the wrapped ServerError payload (use the Display of the inner ServerError<()>) to confirm which RPC the server rejected as unimplemented.
- Verify no proxy/gRPC-Web gateway is rewriting or blocking the method path.
- 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
- Pin client and server versions together in CI
- Probe server capabilities (version/health RPC) before using newer APIs
- Avoid proxies that rewrite gRPC method paths
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
- An unexpected error occurred in the client library
- Internal error
- Received an invalid response from the server
- The request does not have valid authentication credentials
- The service is currently unavailable
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)