{"record":{"id":"11cab42ff9e37078","repo":"nautechsystems/nautilus_trader","slug":"continuous-future-requests-require-requestbars","errorCode":null,"errorMessage":"Continuous future requests require `RequestBars`","messagePattern":"Continuous future requests require `RequestBars`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/data/src/engine/mod.rs","lineNumber":1393,"sourceCode":"            RequestCommand::BookDepth(req) => client.request_book_depth(req),\n            RequestCommand::Quotes(req) => client.request_quotes(req),\n            RequestCommand::Trades(req) => client.request_trades(req),\n            RequestCommand::FundingRates(req) => client.request_funding_rates(req),\n            RequestCommand::OptionChainReferencePrice(req) => {\n                client.request_option_chain_reference_price(req)\n            }\n            RequestCommand::Bars(req) => client.request_bars(req),\n            RequestCommand::Join(_) => {\n                anyhow::bail!(\"RequestJoin must be handled by handle_request_join\")\n            }\n        }?;\n\n        Ok(resolved_client_id)\n    }\n\n    fn execute_continuous_future_request(&mut self, req: RequestCommand) -> anyhow::Result<()> {\n        let RequestCommand::Bars(parent) = req else {\n            anyhow::bail!(\"Continuous future requests require `RequestBars`\");\n        };\n        let request_id = parent.request_id;\n        let Some(continuous_request) = continuous_future_request_from_bars(&parent)? else {\n            return Ok(());\n        };\n\n        self.ensure_continuous_future_target_instrument(&continuous_request);\n        self.prepare_request_bar_aggregators_from_state(\n            request_id,\n            &continuous_request.request_bar_aggregation,\n        )?;\n\n        let response_client_id = match self.resolve_request_client_id(\n            parent.client_id.as_ref(),\n            Some(&continuous_request.primary_bar_type.instrument_id().venue),\n        ) {\n            Ok(client_id) => client_id,\n            Err(e) => {","sourceCodeStart":1375,"sourceCodeEnd":1411,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/data/src/engine/mod.rs#L1375-L1411","documentation":"execute_continuous_future_request only knows how to process RequestCommand::Bars; receiving any other request type means the continuous-future pipeline was invoked incorrectly and the engine bails. Continuous futures are always requested as (aggregated) Bars with continuous parameters.","triggerScenarios":"Calling execute_continuous_future_request (or a code path that routes requests into it) with a RequestCommand variant other than Bars, e.g. a Data, Instrument, or Join request flagged as a continuous-future request.","commonSituations":"Custom routing code that sends non-bars requests into the continuous-future path; misconfiguring a continuous futures subscription to use a data type other than bars; internal dispatch bugs after upgrades.","solutions":["Ensure continuous-future requests are constructed as RequestCommand::Bars with continuous futures parameters (e.g. go_back, continuation method in params)","Route non-bars request types through the normal request path instead of the continuous-future one","If writing custom dispatch, match on RequestCommand::Bars before invoking execute_continuous_future_request","Verify no adapter or plugin rewrites the request type before it reaches this path"],"exampleFix":"// before\nengine.execute_continuous_future_request(RequestCommand::Data(data_req));\n// after\nengine.execute_continuous_future_request(RequestCommand::Bars(bars_req_with_continuous_params));","handlingStrategy":"validation","validationCode":"if !matches!(cmd, RequestCommand::Bars(_)) {\n    // route through normal request path, not continuous-future path\n    engine.request(cmd);\n    return Ok(());\n}","typeGuard":"fn as_bars(cmd: RequestCommand) -> Option<RequestBars> {\n    match cmd { RequestCommand::Bars(b) => Some(*b), _ => None }\n}","tryCatchPattern":"match engine.request(cmd) {\n    Err(e) if e.to_string().contains(\"require `RequestBars`\") => {\n        log::error!(\"continuous-future path only accepts Bars: {e}\");\n    }\n    other => other?,\n}","preventionTips":["Build continuous-future requests exclusively as Bars with continuous params","Do not send other data types into continuous-future routing","Add a match guard on RequestCommand::Bars in custom dispatch code"],"tags":["rust","data-engine","continuous-futures","request-routing"],"backgroundTag":"invalid-argument-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"}