diff --git a/src/backend/distributed/connection/shared_connection_stats.c b/src/backend/distributed/connection/shared_connection_stats.c index 40d74ca11..577dd86d3 100644 --- a/src/backend/distributed/connection/shared_connection_stats.c +++ b/src/backend/distributed/connection/shared_connection_stats.c @@ -416,7 +416,7 @@ IncrementSharedConnectionCounterInternal(uint32 externalFlags, workerNodeConnectionEntry->count = 0; } - /* Initialized SharedWorkerNodeDatabaseConnStatsHash the same way */ + /* Initialize SharedWorkerNodeDatabaseConnStatsHash the same way */ SharedWorkerNodeDatabaseConnStatsHashKey workerNodeDatabaseKey = PrepareWorkerNodeDatabaseHashKey(hostname, port, database); bool workerNodeDatabaseEntryFound = false; @@ -504,15 +504,6 @@ static bool isConnectionSlotAvailable(SharedWorkerNodeConnStatsHashKey *connKey, */ void DecrementSharedConnectionCounter(const char *hostname, int port) -{ - - DecrementSharedConnectionCounterInternal(hostname, port); - UnLockConnectionSharedMemory(); - WakeupWaiterBackendsForSharedConnection(); -} - -static void -DecrementSharedConnectionCounterInternal(const char *hostname, int port) { /* * Do not call GetMaxSharedPoolSize() here, since it may read from @@ -526,6 +517,17 @@ DecrementSharedConnectionCounterInternal(const char *hostname, int port) LockConnectionSharedMemory(LW_EXCLUSIVE); + DecrementSharedConnectionCounterInternal(hostname, port); + + UnLockConnectionSharedMemory(); + WakeupWaiterBackendsForSharedConnection(); +} + +static void +DecrementSharedConnectionCounterInternal(const char *hostname, int port) +{ + + bool workerNodeEntryFound = false; SharedWorkerNodeConnStatsHashKey workerNodeKey = PrepareWorkerNodeHashKey(hostname, port); SharedWorkerNodeConnStatsHashEntry *workerNodeEntry =