From 06e55df14148e5e7eb8497afc0801af3a8f5b5f6 Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Wed, 13 Jul 2022 14:11:18 +0200 Subject: [PATCH] Make sure citus_is_coordinator works on read replicas (cherry picked from commit b2e9a5baf15e6fbb461bd8f5476a947c6512be03) --- src/backend/distributed/metadata/node_metadata.c | 2 +- src/backend/distributed/operations/worker_node_manager.c | 6 +++--- src/include/distributed/worker_manager.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index 23d4d3f4d..5603189c5 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -1687,7 +1687,7 @@ citus_is_coordinator(PG_FUNCTION_ARGS) bool isCoordinator = false; if (GetLocalGroupId() == COORDINATOR_GROUP_ID && - ActivePrimaryNodeCount() > 0) + ActiveReadableNodeCount() > 0) { isCoordinator = true; } diff --git a/src/backend/distributed/operations/worker_node_manager.c b/src/backend/distributed/operations/worker_node_manager.c index 16c0afb54..c516e27ef 100644 --- a/src/backend/distributed/operations/worker_node_manager.c +++ b/src/backend/distributed/operations/worker_node_manager.c @@ -94,12 +94,12 @@ ActivePrimaryNonCoordinatorNodeCount(void) /* - * ActivePrimaryNodeCount returns the number of groups with a primary in the cluster. + * ActiveReadableNodeCount returns the number of nodes in the cluster. */ uint32 -ActivePrimaryNodeCount(void) +ActiveReadableNodeCount(void) { - List *nodeList = ActivePrimaryNodeList(NoLock); + List *nodeList = ActiveReadableNodeList(); return list_length(nodeList); } diff --git a/src/include/distributed/worker_manager.h b/src/include/distributed/worker_manager.h index e861b8a65..cf1458047 100644 --- a/src/include/distributed/worker_manager.h +++ b/src/include/distributed/worker_manager.h @@ -72,7 +72,7 @@ extern WorkerNode * WorkerGetRoundRobinCandidateNode(List *workerNodeList, uint64 shardId, uint32 placementIndex); extern uint32 ActivePrimaryNonCoordinatorNodeCount(void); -extern uint32 ActivePrimaryNodeCount(void); +extern uint32 ActiveReadableNodeCount(void); extern List * ActivePrimaryNonCoordinatorNodeList(LOCKMODE lockMode); extern List * ActivePrimaryNodeList(LOCKMODE lockMode); extern List * ActivePrimaryRemoteNodeList(LOCKMODE lockMode);