{"record":{"id":"e21d4ac000ce7bce","repo":"influxdata/influxdb","slug":"unrecoverable-data-loss-or-corruption-0","errorCode":null,"errorMessage":"Unrecoverable data loss or corruption: {0}","messagePattern":"Unrecoverable data loss or corruption: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"core/influxdb_iox_client/src/client/error.rs","lineNumber":108,"sourceCode":"    #[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\nimpl From<Status> for Error {\n    fn from(s: Status) -> Self {\n        match s.code() {\n            Code::Ok => Self::Client(\"status is not an error\".into()),\n            Code::Cancelled => Self::Cancelled(parse_status(s)),\n            Code::Unknown => Self::Unknown(parse_status(s)),","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/core/influxdb_iox_client/src/client/error.rs#L90-L126","documentation":"This Error variant maps a gRPC Status with code DATA_LOSS into \"Unrecoverable data loss or corruption: {0}\". The server (or transport) has determined that data was lost or corrupted and the operation cannot be retried successfully. The From<Status> impl in core/influxdb_iox_client/src/client/error.rs produces it; the wrapped ServerError<()> carries any server-provided detail.","triggerScenarios":"Server detects corruption in persisted data (segment/WAL/catalog) while serving a read or write; a storage backend reports unrecoverable read errors; transport-level corruption flagged mid-stream.","commonSituations":"Failed disks or truncated Parquet/WAL files on an IOx node; restoring from an incomplete backup; hardware faults in the object store backing the cluster.","solutions":["Do not blindly retry — DATA_LOSS indicates a non-transient condition.","Inspect server logs and storage health to identify the corrupted segment or object.","Restore the affected data from backups/replication and re-run the operation.","Escalate to the storage/ops team; this usually requires server-side remediation, not client changes."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":"fn is_data_loss(e: &client::Error) -> bool {\n    matches!(e, client::Error::DataLoss(_))\n}","tryCatchPattern":"match res {\n    Err(Error::DataLoss(se)) => {\n        page_storage_ops(&format!(\"data loss: {se}\"));\n        // switch to a backup/replica data path if available\n    }\n    other => other.map_err(Into::into),\n}","preventionTips":["Never blind-retry DATA_LOSS","Maintain backups/replication for IOx data","Monitor disk and object-store health server-side"],"tags":["grpc","rust","influxdb-iox","data-corruption"],"backgroundTag":"unrecoverable-data-loss","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"}