{"record":{"id":"36143df502f10bba","repo":"risingwavelabs/risingwave","slug":"storage-error-0-36143d","errorCode":null,"errorMessage":"Storage error: {0}","messagePattern":"Storage error: (.+?)","errorType":"error_code","errorClass":"StreamExecutorError","httpStatus":null,"severity":"critical","filePath":"src/stream/src/executor/error.rs","lineNumber":41,"sourceCode":"use risingwave_pb::PbFieldNotFound;\nuse risingwave_rpc_client::error::RpcError;\nuse risingwave_storage::error::StorageError;\nuse strum_macros::AsRefStr;\n\nuse super::Barrier;\nuse super::exchange::error::ExchangeChannelClosed;\n\n/// A specialized Result type for streaming executors.\npub type StreamExecutorResult<T> = std::result::Result<T, StreamExecutorError>;\n\n/// The error type for streaming executors.\n#[derive(\n    thiserror::Error, thiserror_ext::ReportDebug, thiserror_ext::Box, thiserror_ext::Construct,\n)]\n#[thiserror_ext(newtype(name = StreamExecutorError, backtrace))]\n#[derive(AsRefStr)]\npub enum ErrorKind {\n    #[error(\"Storage error: {0}\")]\n    Storage(\n        #[backtrace]\n        #[from]\n        StorageError,\n    ),\n\n    #[error(\"Chunk operation error: {0}\")]\n    ArrayError(\n        #[from]\n        #[backtrace]\n        ArrayError,\n    ),\n\n    #[error(\"Chunk operation error: {0}\")]\n    ExprError(\n        #[from]\n        #[backtrace]\n        ExprError,","sourceCodeStart":23,"sourceCodeEnd":59,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/stream/src/executor/error.rs#L23-L59","documentation":"`ErrorKind::Storage` is a variant of the stream executor error enum (`StreamExecutorError`) that wraps a `StorageError` with the message \"Storage error: {0}\". It is the standard conversion (via `#[from]`) whenever any state-table/Hummock storage operation inside a streaming executor fails, and it carries the underlying error and backtrace.","triggerScenarios":"Any state table read/write inside a stream executor failing — e.g., Hummock SST lookups, epoch advance/retryable errors, remote object-store I/O failures, or state table schema mismatches — automatically converted into a StreamExecutorError through the `From<StorageError>` impl.","commonSituations":"Object store (S3/MinIO/OSS) outages or bad credentials; Hummock compaction or read timeouts under load; meta node/network failures breaking state table access; running with a misconfigured storage backend endpoint.","solutions":["Read the inner StorageError in the log to identify the root cause (network, auth, timeout) and fix the storage backend.","Verify object-store connectivity and credentials (S3/MinIO endpoint, keys, region) in the RisingWave config.","Check meta node and compactor health; restart failed components after fixing the underlying storage issue.","If the error is retryable (epoch conflict), RisingWave usually retries automatically — persistent occurrences mean a real storage fault."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Pre-flight: verify the object store is reachable before starting RisingWave\n// e.g. aws s3 ls s3://<hummock-bucket> or mc ls local/minio","typeGuard":null,"tryCatchPattern":"// RisingWave retries retryable storage errors internally; operators should:\n// 1) alert on persistent 'Storage error:' logs, 2) check meta/compactor/object store health,\n// 3) restart affected components after the backend recovers.","preventionTips":["Monitor object-store latency and error rates.","Use stable endpoints and rotate credentials before expiry.","Size Hummock/compactor resources for your write throughput.","Set up alerts on storage-related RisingWave logs."],"tags":["storage","hummock","state-table","streaming","rust"],"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"}