mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-29 19:21:01 +00:00
The new service is responsible for: * spreading forward_request execution across multiple nodes in cluster * collecting forward_request execution results and merging them `forward_service::dispatch` method takes forward_request as an argument, and forwards its execution to group of other nodes (using rpc verb added in previous commits). Each node (in the group chosen by dispatch method) is provided with forward_request, which is no different from the original argument except for changed partition ranges. They are changed so that vnodes contained in them are owned by recipient node. Executing forward_request is realized in `forward_service::execute` method, that is registered to be called on FORWARD_REQUEST verb receipt. Process of executing forward_request consists of mocking few non-serializable object (such as `cql3::selection`) in order to create `service:pager:query_pagers::pager` and `cql3::selection::result_set_builder`. After pager and result_set_builder creation, execution process resembles what might be seen in select_statement's execution path.