mirror of https://github.com/citusdata/citus.git
When the user picks "round-robin" policy, the aim is that the load is distributed across nodes. However, for reference tables on the coordinator, since local execution kicks in immediately, round-robin is ignored. With this change, we're excluding the placement on the coordinator. Although the approach seems a little bit invasive because of modifications in the placement list, that sounds acceptable. We could have done this in some other ways such as: 1) Add a field to "Task->roundRobinPlacement" (or such), which is updated as the first element after RoundRobinPolicy is applied. During the execution, if that placement is local to the coordinator, skip it and try the other remote placements. 2) On TaskAccessesLocalNode()@local_execution.c, check task_assignment_policy, if round-robin selected and there is local placement on the coordinator, skip it. However, task assignment is done on planning, but this decision is happening on the execution, which could create weird edge cases. |
||
---|---|---|
.. | ||
commands | ||
connection | ||
deparser | ||
executor | ||
master | ||
metadata | ||
planner | ||
progress | ||
relay | ||
sql | ||
test | ||
transaction | ||
utils | ||
worker | ||
.gitignore | ||
Makefile | ||
citus.control | ||
shared_library_init.c |