{"record":{"id":"a55196fcb4f83ca6","repo":"risingwavelabs/risingwave","slug":"serialize-deserialize-error-0-a55196","errorCode":null,"errorMessage":"Serialize/deserialize error: {0}","messagePattern":"Serialize/deserialize error: (.+?)","errorType":"error_code","errorClass":"StreamExecutorError","httpStatus":null,"severity":"error","filePath":"src/stream/src/executor/error.rs","lineNumber":63,"sourceCode":"        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,\n    ),\n\n    // TODO: remove this after state table is fully used\n    #[error(\"Serialize/deserialize error: {0}\")]\n    SerdeError(\n        #[source]\n        #[backtrace]\n        BoxedError,\n    ),\n\n    #[error(\"Sink error: sink_id={1}, error: {0}\")]\n    SinkError(\n        #[source]\n        #[backtrace]\n        SinkError,\n        SinkId,\n    ),\n\n    #[error(transparent)]\n    RpcError(\n        #[from]\n        #[backtrace]","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/stream/src/executor/error.rs#L45-L81","documentation":"`ErrorKind::SerdeError` wraps an arbitrary boxed error (`BoxedError`) with the message \"Serialize/deserialize error: {0}\". It is used for serialization/deserialization failures in the stream executor — historically for the pre-state-table in-memory barrier/cache paths, as noted by the TODO comment, and any ad-hoc serde failure that doesn't have a dedicated variant.","triggerScenarios":"Failing to serialize or deserialize executor state — e.g., encoding barriers or cached rows into/out of state storage, or converting between internal representations — where the error is reported via `SerdeError(BoxedError)`.","commonSituations":"Version skew between nodes after an upgrade where serialized state formats changed; corrupted state in a cache/barrier path; custom or newly added types lacking proper serde implementations.","solutions":["Read the inner boxed error message to identify which type failed to (de)serialize.","Ensure all nodes in the cluster run the same RisingWave version; complete rolling upgrades cleanly.","If state corruption is suspected, rebuild the affected MV (drop and recreate) to regenerate state.","Check that any newly added datum types implement the required serde encodings used by the executor."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Operators: on 'Serialize/deserialize error', check cluster version consistency first:\n// SELECT version(); on each node / check deployed image tags.\n// If corruption is suspected, drop and recreate the affected MV to rebuild state.","preventionTips":["Keep all nodes on the same RisingWave version.","Avoid killing nodes mid-barrier; use graceful shutdown.","Back up state store before upgrades.","Rebuild MVs after any upgrade that touches serialization formats."],"tags":["streaming","serialization","state-table","rust"],"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-14T16:17:12.679Z"}