{"record":{"id":"7800ee2c29fcb30e","repo":"nautechsystems/nautilus_trader","slug":"error-parsing-payload-kind-e","errorCode":null,"errorMessage":"Error parsing payload kind: {e}","messagePattern":"Error parsing payload kind: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/infrastructure/src/redis/msgbus.rs","lineNumber":851,"sourceCode":"                    String::from_utf8(bytes.clone())\n                        .map_err(|e| anyhow::anyhow!(\"Error parsing topic: {e}\"))?,\n                );\n            }\n            b\"type\" => {\n                let redis::Value::BulkString(bytes) = &pair[1] else {\n                    anyhow::bail!(\"Invalid type format: {stream_msg:?}\");\n                };\n                type_name = Some(\n                    String::from_utf8(bytes.clone())\n                        .map_err(|e| anyhow::anyhow!(\"Error parsing type: {e}\"))?,\n                );\n            }\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 {","sourceCodeStart":833,"sourceCodeEnd":869,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/infrastructure/src/redis/msgbus.rs#L833-L869","documentation":"The optional `payload_kind` header (PAYLOAD_KIND_FIELD) must decode as valid UTF-8 so it can be compared against PAYLOAD_KIND_TYPED. This error is thrown when the bytes are not valid UTF-8. (A well-formed but unrecognized kind value raises the separate 'Unknown payload kind' error instead.)","triggerScenarios":"decode_bus_message (via stream_messages) reads a `payload_kind` BulkString whose bytes fail std::str::from_utf8.","commonSituations":"A producer wrote raw/binary data into the payload_kind header; custom or older publishers emitting non-UTF-8 kind markers; stream corruption.","solutions":["Inspect the entry's payload_kind bytes and fix the producer to write the literal UTF-8 marker used by PAYLOAD_KIND_TYPED.","Align producer/consumer versions so both use the same payload-kind convention.","Delete the corrupt entry and republish."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if std::str::from_utf8(&kind_bytes).is_err() {\n    return Err(\"payload_kind 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 payload kind\") => log::warn!(\"corrupt payload_kind, skipping\"),\n    Err(e) => return Err(e),\n}","preventionTips":["Only set payload_kind via the library constants, never hand-written strings.","Keep producer and consumer crate versions aligned."],"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"}