diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c new file mode 100644 index 70d2570..f5c6f9a *** a/src/backend/access/transam/xlog.c --- b/src/backend/access/transam/xlog.c *************** XLogSetAsyncXactLSN(XLogRecPtr asyncXact *** 2609,2614 **** --- 2609,2615 ---- { XLogRecPtr WriteRqstPtr = asyncXactLSN; bool sleeping; + static XLogRecPtr last_woke = 0; SpinLockAcquire(&XLogCtl->info_lck); LogwrtResult = XLogCtl->LogwrtResult; *************** XLogSetAsyncXactLSN(XLogRecPtr asyncXact *** 2630,2635 **** --- 2631,2642 ---- /* if we have already flushed that far, we're done */ if (WriteRqstPtr <= LogwrtResult.Flush) return; + + /* If we have already woken up the WALWriter for this boundary, we're done */ + if (WriteRqstPtr <= last_woke) + return; + + last_woke=WriteRqstPtr; } /*