{"record":{"id":"3d140cf1eb98baac","repo":"nautechsystems/nautilus_trader","slug":"unsupported-rtds-custom-data-type-other","errorCode":null,"errorMessage":"Unsupported RTDS custom data type: {other}","messagePattern":"Unsupported RTDS custom data type: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/polymarket/src/rtds.rs","lineNumber":1648,"sourceCode":"                let topic = window.topic();\n                Ok(Self {\n                    key: tracked_key(topic.as_str(), &symbol_lower),\n                    wire: RtdsWireSubscription {\n                        topic: topic.as_str(),\n                        msg_type: \"update\",\n                        filters: None,\n                    },\n                })\n            }\n            POLYMARKET_RTDS_EQUITY_PRICE_TYPE_NAME => Ok(Self {\n                key: tracked_key(RtdsTopic::EquityPrices.as_str(), &symbol_lower),\n                wire: RtdsWireSubscription {\n                    topic: RtdsTopic::EquityPrices.as_str(),\n                    msg_type: \"update\",\n                    filters: None,\n                },\n            }),\n            other => anyhow::bail!(\"Unsupported RTDS custom data type: {other}\"),\n        }\n    }\n}\n\nfn tracked_key(topic: &str, symbol_lower: &str) -> String {\n    format!(\"{topic}:{symbol_lower}\")\n}\n\nfn decimal_from_signed_e18(field: &str, value: &str) -> anyhow::Result<Decimal> {\n    let digits = value.strip_prefix('-').unwrap_or(value);\n    if digits.is_empty() || !digits.bytes().all(|byte| byte.is_ascii_digit()) {\n        anyhow::bail!(\"invalid signed E18 integer for {field}: {value}\");\n    }\n\n    let mantissa = value\n        .parse::<i128>()\n        .with_context(|| format!(\"signed E18 integer out of range for {field}: {value}\"))?;\n    Decimal::try_from_i128_with_scale(mantissa, 18)","sourceCodeStart":1630,"sourceCodeEnd":1666,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/polymarket/src/rtds.rs#L1630-L1666","documentation":"The RTDS message parser matched a wire payload against a closed set of known custom data types; any unrecognized variant hits the catch-all arm and is rejected. This prevents silently constructing wrong data types from unknown upstream payloads.","triggerScenarios":"An RTDS message whose `other` discriminant/field does not match any known custom data type is passed to the conversion that builds wire subscriptions / typed messages (parse_md_message path).","commonSituations":"Polymarket added a new RTDS topic or message kind the adapter does not know; a typo'd or renamed message type in subscription config; running an adapter version older than the venue's feed schema.","solutions":["Log the full `other` payload to identify the unknown message type","Upgrade the nautilus_polymarket adapter / nautilus_trader to a version supporting the new RTDS type","If the type is expected to be ignored, filter unknown message kinds before conversion instead of passing them to the parser","Add the missing enum arm (RtdsCustomDataType variant + wire mapping) and regenerate any generated bindings"],"exampleFix":"// before\nother => anyhow::bail!(\"Unsupported RTDS custom data type: {other}\"),\n// after\nother => {\n    tracing::debug!(\"ignoring unknown RTDS custom data type: {other}\");\n    return Ok(None);\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":"fn is_known_rtds_type(other: &RtdsCustomDataType) -> bool {\n    matches!(other, RtdsCustomDataType::CryptoPrices | RtdsCustomDataType::EquityPrices)\n}","tryCatchPattern":"match parse_md_message(&raw) {\n    Ok(msg) => handle(msg),\n    Err(e) if e.to_string().contains(\"Unsupported RTDS custom data type\") => log::debug!(\"skipped unknown RTDS type: {e}\"),\n    Err(e) => return Err(e),\n}","preventionTips":["Upgrade the adapter when Polymarket adds RTDS message kinds","Pre-filter subscriptions to known topics only","Log and monitor unknown-type occurrences"],"tags":["rust","websocket","polymarket","schema"],"backgroundTag":"unsupported-enum-value","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}