Commit 87d8bd7c authored by Simon Riggs's avatar Simon Riggs

Ensure all replication message info is available and correct via WalRcv

parent be690e29
...@@ -218,7 +218,7 @@ WalReceiverMain(void) ...@@ -218,7 +218,7 @@ WalReceiverMain(void)
startpoint = walrcv->receiveStart; startpoint = walrcv->receiveStart;
/* Initialise to a sanish value */ /* Initialise to a sanish value */
walrcv->lastMsgSendTime = walrcv->lastMsgReceiptTime = GetCurrentTimestamp(); walrcv->lastMsgSendTime = walrcv->lastMsgReceiptTime = walrcv->latestWalEndTime = GetCurrentTimestamp();
SpinLockRelease(&walrcv->mutex); SpinLockRelease(&walrcv->mutex);
...@@ -749,6 +749,9 @@ ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime) ...@@ -749,6 +749,9 @@ ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime)
/* Update shared-memory status */ /* Update shared-memory status */
SpinLockAcquire(&walrcv->mutex); SpinLockAcquire(&walrcv->mutex);
if (XLByteLT(walrcv->latestWalEnd, walEnd))
walrcv->latestWalEndTime = sendTime;
walrcv->latestWalEnd = walEnd;
walrcv->lastMsgSendTime = sendTime; walrcv->lastMsgSendTime = sendTime;
walrcv->lastMsgReceiptTime = lastMsgReceiptTime; walrcv->lastMsgReceiptTime = lastMsgReceiptTime;
SpinLockRelease(&walrcv->mutex); SpinLockRelease(&walrcv->mutex);
......
...@@ -260,7 +260,7 @@ GetReplicationApplyDelay(void) ...@@ -260,7 +260,7 @@ GetReplicationApplyDelay(void)
replayPtr = GetXLogReplayRecPtr(NULL); replayPtr = GetXLogReplayRecPtr(NULL);
if (XLByteLE(receivePtr, replayPtr)) if (XLByteEQ(receivePtr, replayPtr))
return 0; return 0;
TimestampDifference(GetCurrentChunkReplayStartTime(), TimestampDifference(GetCurrentChunkReplayStartTime(),
......
...@@ -83,6 +83,12 @@ typedef struct ...@@ -83,6 +83,12 @@ typedef struct
TimestampTz lastMsgSendTime; TimestampTz lastMsgSendTime;
TimestampTz lastMsgReceiptTime; 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. * connection string; is used for walreceiver to connect with the primary.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment