{"record":{"id":"c9dbb0f51818438d","repo":"risingwavelabs/risingwave","slug":"statestorage-error-0","errorCode":null,"errorMessage":"StateStorage error: {0}","messagePattern":"StateStorage error: (.+?)","errorType":"error_code","errorClass":"BackupError","httpStatus":null,"severity":"error","filePath":"src/storage/backup/src/error.rs","lineNumber":34,"sourceCode":"use thiserror::Error;\n\npub type BackupResult<T> = Result<T, BackupError>;\n\n#[derive(Error, Debug)]\npub enum BackupError {\n    #[error(\"BackupStorage error: {0}\")]\n    BackupStorage(\n        #[backtrace]\n        #[source]\n        BoxedError,\n    ),\n    #[error(\"MetaStorage error: {0}\")]\n    MetaStorage(\n        #[backtrace]\n        #[source]\n        BoxedError,\n    ),\n    #[error(\"StateStorage error: {0}\")]\n    StateStorage(\n        #[backtrace]\n        #[source]\n        BoxedError,\n    ),\n    #[error(\"Encoding error: {0}\")]\n    Encoding(\n        #[backtrace]\n        #[source]\n        BoxedError,\n    ),\n    #[error(\"Decoding error: {0}\")]\n    Decoding(\n        #[backtrace]\n        #[source]\n        BoxedError,\n    ),\n    #[error(\"Checksum mismatch: expected {expected}, found: {found}\")]","sourceCodeStart":16,"sourceCodeEnd":52,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/storage/backup/src/error.rs#L16-L52","documentation":"`BackupError::StateStorage` wraps an underlying error from the state storage (Hummock) layer during backup operations. Reading SST/object metadata or state data needed to build a backup failed; the original error is preserved as source with backtrace.","triggerScenarios":"Creating a storage backup: listing/reading SST files from Hummock/object store, fetching versioned data or manifest entries; failures from the state store client are wrapped in this variant.","commonSituations":"Object store credentials expired mid-backup; SST files garbage-collected before backup completed; network partition to S3/minio; version/manifest inconsistencies in Hummock.","solutions":["Read the wrapped source error for the root cause (I/O, auth, missing object).","Ensure the object store backing Hummock is healthy and objects are not being GC'd concurrently.","Retry the backup once storage access is restored; check Hummock GC settings if objects vanish."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Ensure object store is reachable and required SSTs exist before backup\nfor sst in required_ssts {\n    assert!(object_store.head(sst).await.is_ok(), \"missing {sst:?}\");\n}","typeGuard":null,"tryCatchPattern":"match create_backup().await {\n    Err(e @ BackupError::StateStorage(_)) => {\n        // transient object-store errors dominate; retry with backoff\n        retry_with_backoff(create_backup).await\n    }\n    other => other?,\n}","preventionTips":["Pause or tune Hummock GC during backups so SSTs are not deleted mid-read.","Use long-lived valid credentials for the object store.","Monitor object store error rates and network health."],"tags":["backup","state-storage","hummock","rust"],"backgroundTag":"file-read-failed","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}