Open
Description
Motivation
cpp-driver provides an option to explicitly set a node to be coordinator for a specific request. It argues for that option this way:
In general, this should not be used, but it can be useful in the following situations:
- To query node-local tables such as system and virtual tables.
- To apply a sequence of schema changes where it makes sense for all the changes to be applied on a single node.
Solution
Let's expose a setter for explicit coordinator - consider identifying by address or host_id.
If an explicit coordinator is set for a statement, then:
- load balancing policy shall be ignored,
- speculative execution shall be disabled,
- retries shall be only performed on the same node (consider if
RetryNextNode
decisions should be then changed intoRetrySameNode
or intoDontRetry
).