{"record":{"id":"4c02585f8d86cb81","repo":"influxdata/influxdb","slug":"internal-error-0","errorCode":null,"errorMessage":"Internal error: {0}","messagePattern":"Internal error: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"core/influxdb_iox_client/src/client/error.rs","lineNumber":102,"sourceCode":"    #[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}\")]\n    Client(StdError),\n}\n","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/core/influxdb_iox_client/src/client/error.rs#L84-L120","documentation":"This Error variant maps a gRPC Status with code INTERNAL into a Rust error with the message \"Internal error: {0}\". The IOx server reported an unexpected internal failure while servicing the request; it is the server-side analogue of a 500 response. The From<Status> impl in core/influxdb_iox_client/src/client/error.rs produces it automatically for any internal status returned over the wire.","triggerScenarios":"Server panic or invariant violation while executing an RPC; internal storage/catalog failure reported as a tonic Status with code Internal; a server bug during query planning or write handling.","commonSituations":"Hitting a genuine IOx server bug under specific data shapes or query patterns; server misconfiguration (corrupt WAL, bad catalog state); resource exhaustion inside the server surfacing as INTERNAL instead of UNAVAILABLE.","solutions":["Inspect the IOx server logs around the request time for the panic or internal error details.","Retry the request once in case of a transient internal condition, then stop — INTERNAL is usually not self-healing.","Reduce or simplify the request (smaller batch, simpler query) to see whether a specific payload triggers a server bug.","Report the issue with the ServerError message payload and server version if it reproduces."],"exampleFix":"// before: retrying any error indiscriminately\nif let Err(e) = client.write(lines).await { retry(); }\n// after: only retry transient codes, fail fast on Internal\nmatch client.write(lines).await {\n    Err(Error::Internal(server_err)) => {\n        log::error!(\"server internal error: {server_err} — not retrying\");\n        // check server logs, report bug\n    }\n    Err(e) if is_retryable(&e) => retry(),\n    Err(e) => return Err(e.into()),\n    Ok(resp) => /* ... */,\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":"fn is_internal(e: &client::Error) -> bool {\n    matches!(e, client::Error::Internal(_))\n}","tryCatchPattern":"match res {\n    Err(Error::Internal(se)) => {\n        log::error!(\"server internal error: {se}\");\n        alert_ops();\n    }\n    other => other.map_err(Into::into),\n}","preventionTips":["Never auto-retry Internal statuses","Keep server logs correlated with request IDs","Report reproducible internal errors upstream with payload details"],"tags":["grpc","rust","influxdb-iox","server-error"],"backgroundTag":"internal-invariant-violation","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"}