changes_amit_v52_1.patch

application/octet-stream

Filename: changes_amit_v52_1.patch
Type: application/octet-stream
Part: 1
Message: Re: Perform streaming logical transactions by background workers and parallel apply

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
Series: patch v52
File+
src/backend/postmaster/interrupt.c 1 1
src/backend/replication/logical/applyparallelworker.c 8 7
diff --git a/src/backend/postmaster/interrupt.c b/src/backend/postmaster/interrupt.c
index e2e5a1373b..e64029fac4 100644
--- a/src/backend/postmaster/interrupt.c
+++ b/src/backend/postmaster/interrupt.c
@@ -99,7 +99,7 @@ SignalHandlerForCrashExit(SIGNAL_ARGS)
  *
  * Typically, this handler would be used for SIGTERM, but some processes use
  * other signals. In particular, the checkpointer exits on SIGUSR2, and the WAL
- * writer and the logical replication parallel apply worker exit on either
+ * writer and the logical replication parallel apply worker exits on either
  * SIGINT or SIGTERM.
  *
  * ShutdownRequestPending should be checked at a convenient place within the
diff --git a/src/backend/replication/logical/applyparallelworker.c b/src/backend/replication/logical/applyparallelworker.c
index 85bb909104..384ee32d44 100644
--- a/src/backend/replication/logical/applyparallelworker.c
+++ b/src/backend/replication/logical/applyparallelworker.c
@@ -155,8 +155,9 @@ static HTAB *ParallelApplyWorkersHash = NULL;
 /*
  * A list to maintain the active parallel apply workers. The information for
  * the new worker is added to the list after successfully launching it. The
- * list entry is removed at the end of the transaction if there are already
- * enough workers in the worker pool. For more information about the worker
+ * list entry is removed if there are already enough workers in the worker
+ * pool either at the end of the transaction or while trying to find a free
+ * worker for applying the transaction. For more information about the worker
  * pool, see comments atop worker.c.
  */
 static List *ParallelApplyWorkersList = NIL;
@@ -297,14 +298,14 @@ pa_allocate_worker(TransactionId xid)
 											   HASH_ELEM | HASH_BLOBS | HASH_CONTEXT);
 	}
 
-	/* First, try to get a parallel apply worker from the pool. */
+	/*
+	 * First, try to get a parallel apply worker from the pool, if available.
+	 * Otherwise, try to start a new parallel apply worker.
+	 */
 	winfo = pa_get_available_worker();
-
 	if (!winfo)
 	{
-		/* Try to start a new parallel apply worker. */
 		winfo = pa_init_and_launch_worker();
-
 		if (!winfo)
 			return;
 	}
@@ -454,7 +455,7 @@ pa_free_worker_info(ParallelApplyWorkerInfo *winfo)
 }
 
 /*
- * Interrupt handler for main loops of parallel apply worker.
+ * Interrupt handler for main loop of parallel apply worker.
  */
 static void
 ProcessParallelApplyInterrupts(void)