startpoint = walrcv->receiveStart;
/* Initialise to a sanish value */
- walrcv->lastMsgSendTime = walrcv->lastMsgReceiptTime = GetCurrentTimestamp();
+ walrcv->lastMsgSendTime = walrcv->lastMsgReceiptTime = walrcv->latestWalEndTime = GetCurrentTimestamp();
SpinLockRelease(&walrcv->mutex);
/* Update shared-memory status */
SpinLockAcquire(&walrcv->mutex);
+ if (XLByteLT(walrcv->latestWalEnd, walEnd))
+ walrcv->latestWalEndTime = sendTime;
+ walrcv->latestWalEnd = walEnd;
walrcv->lastMsgSendTime = sendTime;
walrcv->lastMsgReceiptTime = lastMsgReceiptTime;
SpinLockRelease(&walrcv->mutex);
replayPtr = GetXLogReplayRecPtr(NULL);
- if (XLByteLE(receivePtr, replayPtr))
+ if (XLByteEQ(receivePtr, replayPtr))
return 0;
TimestampDifference(GetCurrentChunkReplayStartTime(),
TimestampTz lastMsgSendTime;
TimestampTz lastMsgReceiptTime;
+ /*
+ * Latest reported end of WAL on the sender
+ */
+ XLogRecPtr latestWalEnd;
+ TimestampTz latestWalEndTime;
+
/*
* connection string; is used for walreceiver to connect with the primary.
*/