{"record":{"id":"1d9d3ad6687211ed","repo":"risingwavelabs/risingwave","slug":"deserialize-row-error-0","errorCode":null,"errorMessage":"Deserialize row error: {0}","messagePattern":"Deserialize row error: (.+?)","errorType":"error_code","errorClass":"StorageError","httpStatus":null,"severity":"error","filePath":"src/storage/src/error.rs","lineNumber":31,"sourceCode":"// limitations under the License.\n\nuse risingwave_common::util::value_encoding::error::ValueEncodingError;\nuse thiserror::Error;\n\nuse crate::hummock::HummockError;\nuse crate::mem_table::MemTableError;\n\n#[derive(Error, thiserror_ext::ReportDebug, thiserror_ext::Box)]\n#[thiserror_ext(newtype(name = StorageError, backtrace))]\npub enum ErrorKind {\n    #[error(\"Hummock error: {0}\")]\n    Hummock(\n        #[backtrace]\n        #[from]\n        HummockError,\n    ),\n\n    #[error(\"Deserialize row error: {0}\")]\n    DeserializeRow(\n        #[from]\n        #[backtrace]\n        ValueEncodingError,\n    ),\n\n    #[error(\"Serialize/deserialize error: {0}\")]\n    SerdeError(\n        #[from]\n        #[backtrace]\n        memcomparable::Error,\n    ),\n\n    #[error(\"Sled error: {0}\")]\n    Sled(\n        #[backtrace]\n        #[from]\n        sled::Error,","sourceCodeStart":13,"sourceCodeEnd":49,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/storage/src/error.rs#L13-L49","documentation":"A StorageError variant wrapping ValueEncodingError. It is raised when a stored row value cannot be decoded with the expected value encoding, usually because bytes on disk do not match the serializer expected by the column/schema.","triggerScenarios":"Reading a key whose value bytes fail ValueEncoding deserialization — e.g. data written by an older RisingWave version with a different encoding, or a corrupt value in the state store.","commonSituations":"Upgrading a cluster across a value-encoding change and reading old data; manual data migration between clusters; bit-rot or bad writes in object storage.","solutions":["Confirm the reading code uses the same value encoding as the writer (check version/feature flags) and align them","If this follows an upgrade, follow the documented migration path for value-encoding changes instead of reading old-format data directly","If data is corrupt, restore from backup or re-ingest the affected tables"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"match read_row(key).await {\n    Err(e) if matches!(e.kind(), StorageErrorKind::DeserializeRow(_)) => {\n        // value written with different encoding/version: handle old data or restore\n    }\n    other => other,\n}","preventionTips":["Follow documented migration paths across value-encoding changes","Keep writer and reader value encodings in the same code path","Detect corrupt data early with store-level checksums"],"tags":["rust","storage","deserialization","encoding"],"backgroundTag":"json-unmarshal-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"}