Hi, The function in $subject does: while (PQisBusy(streamConn)) { int rc;
/* * We don't need to break down the sleep into smaller increments, * since we'll get interrupted by signals and can either handle * interrupts here or elog(FATAL) within SIGTERM signal handler if * the signal arrives in the middle of establishment of * replication connection. */ ResetLatch(&MyProc->procLatch); rc = WaitLatchOrSocket(&MyProc->procLatch, WL_POSTMASTER_DEATH | WL_SOCKET_READABLE | WL_LATCH_SET, PQsocket(streamConn), 0, WAIT_EVENT_LIBPQWALRECEIVER); if (rc & WL_POSTMASTER_DEATH) exit(1); /* interrupted */ if (rc & WL_LATCH_SET) { CHECK_FOR_INTERRUPTS(); continue; } Doing ResetLatch();WaitLatch() like that makes it possible to miss a the latch being set, e.g. if it happens just after WaitLatchOrSocket() returns. Afaict, the ResetLatch() really should just instead be in the if (rc & WL_LATCH_SET) block. Unless somebody protests, I'll make it so. Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers