From 9dced5b0898be22004d442cb2893848663f967ba Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Wed, 23 Aug 2023 09:55:13 +0200 Subject: [PATCH 3/3] Don't rely on proc being NULL either --- src/backend/replication/logical/launcher.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c index f9d6ebf2d8..8bfceb5c27 100644 --- a/src/backend/replication/logical/launcher.c +++ b/src/backend/replication/logical/launcher.c @@ -201,11 +201,18 @@ WaitForReplicationWorkerAttach(LogicalRepWorker *worker, LWLockAcquire(LogicalRepWorkerLock, LW_SHARED); - /* Worker either died or has started. Return false if died. */ - if (!worker->in_use || worker->proc) + /* Not started? */ + if (!worker->in_use) { LWLockRelease(LogicalRepWorkerLock); - return worker->in_use; + return false; + } + + /* Already going? */ + if (worker->proc) + { + LWLockRelease(LogicalRepWorkerLock); + return true; } LWLockRelease(LogicalRepWorkerLock); @@ -794,7 +801,6 @@ logicalrep_worker_cleanup(LogicalRepWorker *worker) Assert(LWLockHeldByMeInMode(LogicalRepWorkerLock, LW_EXCLUSIVE)); worker->in_use = false; - worker->proc = NULL; } /* -- 2.30.2