{"record":{"id":"363d65b3a8bd0d7b","repo":"influxdata/influxdb","slug":"operation-is-not-implemented-or-supported-0","errorCode":null,"errorMessage":"Operation is not implemented or supported: {0}","messagePattern":"Operation is not implemented or supported: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"core/influxdb_iox_client/src/client/error.rs","lineNumber":99,"sourceCode":"    #[error(\"Some entity that we attempted to create already exists: {0}\")]\n    AlreadyExists(Box<ServerError<AlreadyExists>>),\n\n    #[error(\"The caller does not have permission to execute the specified operation: {0}\")]\n    PermissionDenied(ServerError<()>),\n\n    #[error(\"Some resource has been exhausted: {0}\")]\n    ResourceExhausted(ServerError<()>),\n\n    #[error(\"The system is not in a state required for the operation's execution: {0}\")]\n    FailedPrecondition(Box<ServerError<PreconditionViolation>>),\n\n    #[error(\"The operation was aborted: {0}\")]\n    Aborted(ServerError<()>),\n\n    #[error(\"Operation was attempted past the valid range: {0}\")]\n    OutOfRange(ServerError<()>),\n\n    #[error(\"Operation is not implemented or supported: {0}\")]\n    Unimplemented(ServerError<()>),\n\n    #[error(\"Internal error: {0}\")]\n    Internal(ServerError<()>),\n\n    #[error(\"The service is currently unavailable: {0}\")]\n    Unavailable(ServerError<()>),\n\n    #[error(\"Unrecoverable data loss or corruption: {0}\")]\n    DataLoss(ServerError<()>),\n\n    #[error(\"The request does not have valid authentication credentials: {0}\")]\n    Unauthenticated(ServerError<()>),\n\n    #[error(\"Received an invalid response from the server: {0}\")]\n    InvalidResponse(#[from] FieldViolation),\n\n    #[error(\"An unexpected error occurred in the client library: {0}\")]","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/core/influxdb_iox_client/src/client/error.rs#L81-L117","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before: blanket match on any error\nmatch client.some_rpc(req).await {\n    Ok(resp) => /* ... */,\n    Err(_) => return Err(anyhow!(\"rpc failed\")),\n}\n// after: surface the unimplemented variant explicitly\nmatch client.some_rpc(req).await {\n    Ok(resp) => /* ... */,\n    Err(Error::Unimplemented(server_err)) => {\n        eprintln!(\"server does not implement this RPC: {server_err}\");\n        // fall back to a supported RPC or upgrade the server\n    }\n    Err(e) => return Err(e.into()),\n}","handlingStrategy":"try-catch","validationCode":"// check server/endpoint capability before calling exotic RPCs\nassert!(!endpoint.is_empty(), \"endpoint required\");\n// verify server supports the RPC via its health/version service first\nlet version = client.version().await?;","typeGuard":"fn is_unimplemented(e: &client::Error) -> bool {\n    matches!(e, client::Error::Unimplemented(_))\n}","tryCatchPattern":"match res {\n    Err(Error::Unimplemented(se)) => fallback_to_supported_rpc(se),\n    Err(e) => return Err(e.into()),\n    Ok(v) => Ok(v),\n}","preventionTips":["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"],"tags":["grpc","rust","influxdb-iox","unimplemented"],"backgroundTag":"method-not-implemented","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}