{"record":{"id":"6ec51bf24f967e43","repo":"nautechsystems/nautilus_trader","slug":"error-parsing-encoding-e","errorCode":null,"errorMessage":"Error parsing encoding: {e}","messagePattern":"Error parsing encoding: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/infrastructure/src/redis/msgbus.rs","lineNumber":863,"sourceCode":"            }\n            key if key == PAYLOAD_KIND_FIELD.as_bytes() => {\n                let redis::Value::BulkString(bytes) = &pair[1] else {\n                    anyhow::bail!(\"Invalid payload kind format: {stream_msg:?}\");\n                };\n                let value = std::str::from_utf8(bytes)\n                    .map_err(|e| anyhow::anyhow!(\"Error parsing payload kind: {e}\"))?;\n                anyhow::ensure!(\n                    value == PAYLOAD_KIND_TYPED,\n                    \"Unknown payload kind '{value}'\"\n                );\n                typed_payload = true;\n            }\n            b\"encoding\" => {\n                let redis::Value::BulkString(bytes) = &pair[1] else {\n                    anyhow::bail!(\"Invalid encoding format: {stream_msg:?}\");\n                };\n                let value = std::str::from_utf8(bytes)\n                    .map_err(|e| anyhow::anyhow!(\"Error parsing encoding: {e}\"))?;\n                encoding = value\n                    .parse()\n                    .map_err(|e| anyhow::anyhow!(\"Error parsing encoding: {e}\"))?;\n            }\n            b\"payload\" => {\n                let redis::Value::BulkString(bytes) = &pair[1] else {\n                    anyhow::bail!(\"Invalid payload format: {stream_msg:?}\");\n                };\n                payload = Some(Bytes::copy_from_slice(bytes));\n            }\n            _ => {}\n        }\n    }\n\n    let Some(topic) = topic else {\n        anyhow::bail!(\"Stream message missing topic: {stream_msg:?}\");\n    };\n    let Some(payload) = payload else {","sourceCodeStart":845,"sourceCodeEnd":881,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/infrastructure/src/redis/msgbus.rs#L845-L881","documentation":"The `encoding` header of a stream entry must be valid UTF-8 before it is parsed into a SerializationEncoding. This error wraps the FromUtf8Error/Utf8Error from decoding the raw bytes. It is distinct from error 4005, which is the parse failure into the encoding enum.","triggerScenarios":"stream_messages -> decode_bus_message encounters an `encoding` field whose BulkString bytes are not valid UTF-8.","commonSituations":"Binary corruption of the header; a producer writing non-text bytes into the encoding field; manual stream manipulation.","solutions":["Dump the entry and fix the producer to emit UTF-8 encoding names (e.g. \"msgpack\", \"json\").","Remove and republish the corrupt entry.","Audit any custom publisher for correct string encoding."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if std::str::from_utf8(&encoding_bytes).is_err() {\n    return Err(\"encoding header is not UTF-8\".into());\n}","typeGuard":null,"tryCatchPattern":"match decode_bus_message(entry) {\n    Ok(m) => handle(m),\n    Err(e) if e.to_string().contains(\"Error parsing encoding\") => log::warn!(\"bad encoding header, skipping entry\"),\n    Err(e) => return Err(e),\n}","preventionTips":["Write encoding names through library constants only.","Avoid manual XRADD with hand-built field bytes."],"tags":["redis","utf8","decoding"],"backgroundTag":"json-decode-failed","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}