From 3e5afb2d6e96aeaf2b03335a4046546aa4b950cb Mon Sep 17 00:00:00 2001 From: Mehmet YILMAZ Date: Wed, 4 Sep 2024 14:50:03 +0000 Subject: [PATCH] Add the locking mechanism before the check for whether the coordinator already exists --- citus-tools | 1 + src/backend/distributed/metadata/node_metadata.c | 3 +++ 2 files changed, 4 insertions(+) create mode 160000 citus-tools diff --git a/citus-tools b/citus-tools new file mode 160000 index 00000000000..3376bd6845f --- /dev/null +++ b/citus-tools @@ -0,0 +1 @@ +Subproject commit 3376bd6845f0614908ed304f5033bd644c82d3bf diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index d93b133eaed..d9220594317 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -217,6 +217,9 @@ citus_set_coordinator_host(PG_FUNCTION_ARGS) EnsureTransactionalMetadataSyncMode(); } + /* prevent concurrent modification */ + LockRelationOid(DistNodeRelationId(), RowExclusiveLock); + bool isCoordinatorInMetadata = false; WorkerNode *coordinatorNode = PrimaryNodeForGroup(COORDINATOR_GROUP_ID, &isCoordinatorInMetadata);