{"record":{"id":"300c34855275732d","repo":"nautechsystems/nautilus_trader","slug":"missing-raw-broker-client-order-id-payload","errorCode":null,"errorMessage":"missing raw broker client order ID payload","messagePattern":"missing raw broker client order ID payload","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/binance/src/common/encoder.rs","lineNumber":257,"sourceCode":"        SIGNAL_O_HYPHENS | SIGNAL_O_NO_HYPHENS => {\n            anyhow::ensure!(\n                data.len() == O_FORMAT_B62_LEN,\n                \"invalid O-format broker client order ID payload length\"\n            );\n            let packed = decode_base62(data).context(\"invalid O-format broker client order ID\")?;\n            Ok(unpack_o_format(packed, signal == SIGNAL_O_HYPHENS))\n        }\n        SIGNAL_UUID_HYPHENS | SIGNAL_UUID_NO_HYPHENS => {\n            anyhow::ensure!(\n                data.len() == UUID_B62_LEN,\n                \"invalid UUID broker client order ID payload length\"\n            );\n            let value = decode_base62(data).context(\"invalid UUID broker client order ID\")?;\n            Ok(format_uuid(value, signal == SIGNAL_UUID_HYPHENS))\n        }\n        SIGNAL_RAW => {\n            let raw = std::str::from_utf8(data).context(\"invalid raw broker client order ID\")?;\n            anyhow::ensure!(\n                !raw.is_empty(),\n                \"missing raw broker client order ID payload\"\n            );\n            Ok(raw.to_string())\n        }\n        _ => anyhow::bail!(\n            \"unknown broker client order ID signal byte '{}'\",\n            signal as char\n        ),\n    }\n}\n\nfn build_encoded(prefix: &str, signal: u8, b62: &[u8]) -> String {\n    let mut result = String::with_capacity(prefix.len() + 1 + b62.len());\n    result.push_str(prefix);\n    result.push(signal as char);\n    // base62 output is always valid ASCII\n    result.push_str(std::str::from_utf8(b62).expect(\"base62 is valid UTF-8\"));","sourceCodeStart":239,"sourceCodeEnd":275,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/binance/src/common/encoder.rs#L239-L275","documentation":"For SIGNAL_RAW payloads, decode_broker_id_checked interprets the remaining bytes as the raw broker ID string and rejects empty strings. This error means a raw-format payload was supplied with no actual ID content after the signal byte.","triggerScenarios":"Calling decode_broker_id or decode_client_order_id with a payload consisting of only the SIGNAL_RAW byte (or with an empty body) — e.g. the encoder stored an empty raw ID or the payload was stripped during storage/transport.","commonSituations":"An order was created with an empty client order ID and later decoded; serialization pipelines dropping empty payloads; copy-paste losing the ID portion.","solutions":["Ensure the order always carries a non-empty client order ID before it is encoded.","Check the storage/serialization step did not drop or truncate the payload body.","If the ID is genuinely unknown, handle the decode failure at the caller instead of decoding an empty payload."],"exampleFix":"// before\nlet id = decode_broker_id(payload)?; // payload = [SIGNAL_RAW]\n\n// after\nif payload.len() > 1 {\n    let id = decode_broker_id(payload)?;\n} else {\n    tracing::warn!(\"empty raw broker ID payload; skipping decode\");\n}","handlingStrategy":"type-guard","validationCode":"fn has_raw_payload(p: &[u8]) -> bool {\n    p.len() > 1 && p[0] == SIGNAL_RAW\n}","typeGuard":null,"tryCatchPattern":"// match on the error and skip/repair\nmatch decode_broker_id(payload) {\n    Ok(id) => id,\n    Err(e) if e.to_string().contains(\"missing raw broker client order ID\") => {\n        tracing::warn!(\"empty raw broker ID; treating as unknown\");\n        String::new()\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Never create orders with empty client order IDs.","Check serialization round-trips preserve empty-body payloads."],"tags":["binance","decoding","empty-value","order-id"],"backgroundTag":"empty-required-field","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}