diff options
Diffstat (limited to 'src/backend/replication/walreceiverfuncs.c')
-rw-r--r-- | src/backend/replication/walreceiverfuncs.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/backend/replication/walreceiverfuncs.c b/src/backend/replication/walreceiverfuncs.c index e105f093d35..98706e3b9ba 100644 --- a/src/backend/replication/walreceiverfuncs.c +++ b/src/backend/replication/walreceiverfuncs.c @@ -241,7 +241,8 @@ GetWalRcvWriteRecPtr(XLogRecPtr *latestChunkStart) } /* - * Returns the replication apply delay in ms + * Returns the replication apply delay in ms or -1 + * if the apply delay info is not available */ int GetReplicationApplyDelay(void) @@ -255,6 +256,8 @@ GetReplicationApplyDelay(void) long secs; int usecs; + TimestampTz chunckReplayStartTime; + SpinLockAcquire(&walrcv->mutex); receivePtr = walrcv->receivedUpto; SpinLockRelease(&walrcv->mutex); @@ -264,7 +267,12 @@ GetReplicationApplyDelay(void) if (XLByteEQ(receivePtr, replayPtr)) return 0; - TimestampDifference(GetCurrentChunkReplayStartTime(), + chunckReplayStartTime = GetCurrentChunkReplayStartTime(); + + if (chunckReplayStartTime == 0) + return -1; + + TimestampDifference(chunckReplayStartTime, GetCurrentTimestamp(), &secs, &usecs); |