From 89377ee578eab87107ef08a516efd03d76f362d0 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Fri, 4 Oct 2019 12:07:41 +0200 Subject: [PATCH] Move RowExclusiveLock to start in SyncMetadataToNodes --- .../distributed/metadata/metadata_sync.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index 8f1e38be1..56edd5e02 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -1278,7 +1278,12 @@ SyncMetadataToNodes(void) return METADATA_SYNC_SUCCESS; } - if (!ConditionalLockRelationOid(DistNodeRelationId(), AccessShareLock)) + /* + * Request a RowExclusiveLock so we don't run concurrently with other + * functions updating pg_dist_node, but allow concurrency with functions + * which are just reading from pg_dist_node. + */ + if (!ConditionalLockRelationOid(DistNodeRelationId(), RowExclusiveLock)) { return METADATA_SYNC_FAILED_LOCK; } @@ -1293,17 +1298,7 @@ SyncMetadataToNodes(void) { bool raiseInterrupts = false; - /* - * Request a RowExclusiveLock so we don't run concurrently with other - * functions updating pg_dist_node, but allow concurrency with functions - * which are just reading from pg_dist_node. - */ - if (!ConditionalLockRelationOid(DistNodeRelationId(), RowExclusiveLock)) - { - result = METADATA_SYNC_FAILED_LOCK; - break; - } - else if (!SyncMetadataSnapshotToNode(workerNode, raiseInterrupts)) + if (!SyncMetadataSnapshotToNode(workerNode, raiseInterrupts)) { result = METADATA_SYNC_FAILED_SYNC; }