diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index c80b14e..26eded1 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -12097,10 +12097,17 @@ WaitForWALToBecomeAvailable(XLogRecPtr RecPtr, bool randAccess, * Wait for more WAL to arrive. Time out after 5 seconds * to react to a trigger file promptly. */ - (void) WaitLatch(&XLogCtl->recoveryWakeupLatch, - WL_LATCH_SET | WL_TIMEOUT | - WL_EXIT_ON_PM_DEATH, - 5000L, WAIT_EVENT_RECOVERY_WAL_ALL); + if (PromoteTriggerFile == NULL || strcmp(PromoteTriggerFile, "") == 0) + (void) WaitLatch(&XLogCtl->recoveryWakeupLatch, + WL_LATCH_SET | + WL_EXIT_ON_PM_DEATH, + 0, WAIT_EVENT_RECOVERY_WAL_ALL); + else + (void) WaitLatch(&XLogCtl->recoveryWakeupLatch, + WL_LATCH_SET | WL_TIMEOUT | + WL_EXIT_ON_PM_DEATH, + 5000L, WAIT_EVENT_RECOVERY_WAL_ALL); + ResetLatch(&XLogCtl->recoveryWakeupLatch); break; }