aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/replication/logical/worker.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index 73b3837db66..fde4a254712 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -1491,6 +1491,7 @@ static void
LogicalRepApplyLoop(XLogRecPtr last_received)
{
TimestampTz last_recv_timestamp = GetCurrentTimestamp();
+ bool ping_sent = false;
/*
* Init the ApplyMessageContext which we clean up after each replication
@@ -1503,6 +1504,7 @@ LogicalRepApplyLoop(XLogRecPtr last_received)
/* mark as idle, before starting to loop */
pgstat_report_activity(STATE_IDLE, NULL);
+ /* This outer loop iterates once per wait. */
for (;;)
{
pgsocket fd = PGINVALID_SOCKET;
@@ -1510,7 +1512,6 @@ LogicalRepApplyLoop(XLogRecPtr last_received)
int len;
char *buf = NULL;
bool endofstream = false;
- bool ping_sent = false;
long wait_time;
CHECK_FOR_INTERRUPTS();
@@ -1521,7 +1522,7 @@ LogicalRepApplyLoop(XLogRecPtr last_received)
if (len != 0)
{
- /* Process the data */
+ /* Loop to process all available data (without blocking). */
for (;;)
{
CHECK_FOR_INTERRUPTS();
@@ -1690,10 +1691,7 @@ LogicalRepApplyLoop(XLogRecPtr last_received)
ereport(ERROR,
(errmsg("terminating logical replication worker due to timeout")));
- /*
- * We didn't receive anything new, for half of receiver
- * replication timeout. Ping the server.
- */
+ /* Check to see if it's time for a ping. */
if (!ping_sent)
{
timeout = TimestampTzPlusMilliseconds(last_recv_timestamp,