From 55992d4bc0a45cc4988a3f1a08b0313685911808 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Sat, 12 Aug 2017 11:47:31 +0200 Subject: [PATCH] Disallow task-tracker queries on follower clusters --- .../distributed/executor/multi_task_tracker_executor.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/executor/multi_task_tracker_executor.c b/src/backend/distributed/executor/multi_task_tracker_executor.c index ce3327807..0bb087c71 100644 --- a/src/backend/distributed/executor/multi_task_tracker_executor.c +++ b/src/backend/distributed/executor/multi_task_tracker_executor.c @@ -27,6 +27,7 @@ #include "commands/dbcommands.h" #include "distributed/citus_nodes.h" #include "distributed/connection_management.h" +#include "distributed/metadata_cache.h" #include "distributed/multi_client_executor.h" #include "distributed/multi_physical_planner.h" #include "distributed/multi_server_executor.h" @@ -163,6 +164,13 @@ MultiTaskTrackerExecute(Job *job) const char *transmitTrackerHashName = "Transmit Tracker Hash"; List *jobIdList = NIL; + if (ReadFromSecondaries == USE_SECONDARY_NODES_ALWAYS) + { + ereport(ERROR, (errmsg("task tracker queries are not allowed while " + "citus.use_secondary_nodes is 'always'"), + errhint("try setting citus.task_executor_type TO 'real-time'"))); + } + /* * We walk over the task tree, and create a task execution struct for each * task. We then associate the task with its execution and get back a list. @@ -190,7 +198,7 @@ MultiTaskTrackerExecute(Job *job) * assigning and checking the status of tasks. The second (temporary) hash * helps us in fetching results data from worker nodes to the master node. */ - workerNodeList = ActiveReadableNodeList(); + workerNodeList = ActivePrimaryNodeList(); taskTrackerCount = (uint32) list_length(workerNodeList); taskTrackerHash = TrackerHash(taskTrackerHashName, workerNodeList);