{"record":{"id":"6a31f3a5f00a45eb","repo":"risingwavelabs/risingwave","slug":"storage-error-0-6a31f3","errorCode":null,"errorMessage":"Storage error: {0}","messagePattern":"Storage error: (.+?)","errorType":"error_code","errorClass":"StreamError","httpStatus":null,"severity":"error","filePath":"src/stream/src/error.rs","lineNumber":40,"sourceCode":"\nuse crate::executor::exchange::error::ExchangeChannelClosed;\nuse crate::executor::{Barrier, StreamExecutorError};\nuse crate::task::ActorId;\n\n/// A specialized Result type for streaming tasks.\npub type StreamResult<T> = std::result::Result<T, StreamError>;\n\n/// The error type for streaming tasks.\n#[derive(\n    thiserror::Error,\n    thiserror_ext::ReportDebug,\n    thiserror_ext::Arc,\n    thiserror_ext::ContextInto,\n    thiserror_ext::Construct,\n)]\n#[thiserror_ext(newtype(name = StreamError, backtrace))]\npub enum ErrorKind {\n    #[error(\"Storage error: {0}\")]\n    Storage(\n        #[backtrace]\n        #[from]\n        StorageError,\n    ),\n\n    #[error(\"Expression error: {0}\")]\n    Expression(\n        #[from]\n        #[backtrace]\n        ExprError,\n    ),\n\n    #[error(\"Executor error: {0}\")]\n    Executor(\n        #[from]\n        #[backtrace]\n        StreamExecutorError,","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/stream/src/error.rs#L22-L58","documentation":"This is the Storage variant of the stream engine's ErrorKind enum: any StorageError bubbling up through the streaming compute engine is wrapped and displayed as `Storage error: {0}`. It is a pass-through wrapper — the real cause is in the inner StorageError (Hummock/state-store failure).","triggerScenarios":"Any storage layer failure during streaming: Hummock read/write, S3/local object store I/O, SST operations, epoch/LSM operations, propagated via `?` through the `#[from] StorageError` conversion.","commonSituations":"Object store (S3/MinIO/OSS) unreachable or credentials invalid; Hummock service unavailable; network partition between compute and object storage; disk full in local storage mode.","solutions":["Read the inner StorageError message/backtrace for the actual root cause","Verify object-store connectivity and credentials (endpoint, keys, region)","Check Hummock/meta service health and network between nodes","Retry the operation; if transient object-store errors persist, fix storage config or infra"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// pre-check storage reachability (object store endpoint) before starting the stream job\n// e.g. aws s3 ls s3://your-bucket --endpoint-url $ENDPOINT","typeGuard":null,"tryCatchPattern":"match res {\n    Err(e @ StreamError::Storage(_)) if is_transient(&e) => retry_with_backoff(|| op(), 3),\n    other => other,\n}","preventionTips":["Monitor object-store connectivity and credentials before deployment","Set sane retry/backoff at the storage client level","Keep Hummock/meta services healthy and observed"],"tags":["rust","streaming","storage","hummock"],"backgroundTag":"database-query-failed","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}