create-parallel-apply-txn-hash-after-the-first-worker.patch

application/octet-stream

Filename: create-parallel-apply-txn-hash-after-the-first-worker.patch
Type: application/octet-stream
Part: 0
Message: Re: releasing ParallelApplyTxnHash when pa_launch_parallel_worker returns NULL

Patch

Format: unified
File+
src/backend/replication/logical/applyparallelworker.c 4 4
diff --git a/src/backend/replication/logical/applyparallelworker.c b/src/backend/replication/logical/applyparallelworker.c
index 2e5914d5d9..3dfcff2798 100644
--- a/src/backend/replication/logical/applyparallelworker.c
+++ b/src/backend/replication/logical/applyparallelworker.c
@@ -475,6 +475,10 @@ pa_allocate_worker(TransactionId xid)
 	if (!pa_can_start())
 		return;
 
+	winfo = pa_launch_parallel_worker();
+	if (!winfo)
+		return;
+
 	/* First time through, initialize parallel apply worker state hashtable. */
 	if (!ParallelApplyTxnHash)
 	{
@@ -490,10 +494,6 @@ pa_allocate_worker(TransactionId xid)
 										   HASH_ELEM | HASH_BLOBS | HASH_CONTEXT);
 	}
 
-	winfo = pa_launch_parallel_worker();
-	if (!winfo)
-		return;
-
 	/* Create an entry for the requested transaction. */
 	entry = hash_search(ParallelApplyTxnHash, &xid, HASH_ENTER, &found);
 	if (found)