> On May 20, 2026, at 12:10, Michael Paquier <[email protected]> wrote:
> 
> On Wed, May 20, 2026 at 09:47:40AM +0800, Chao Li wrote:
>> I just read v2, and it is actually the first solution I tried. The
>> reason I gave up on that approach and switched to the implementation
>> in v1 is that it may wrongly report last_msg_send_time,
>> last_msg_receipt_time, and latest_end_time.
> 
> As of the code, we have the following at the top of WalReceiverMain()
> before the first connection attempt:
>    /* Initialise to a sanish value */
>    now = GetCurrentTimestamp();
>    walrcv->lastMsgSendTime =
>       walrcv->lastMsgReceiptTime = walrcv->latestWalEndTime = now;
> 

Was that okay because walrcv->ready_to_display was false, so the sane initial 
value would not show up through pg_stat_wal_receiver?

> And the state of v2 is actually fine, because we finish by reporting
> in the SQL calls values that represent the state the WAL receiver is 
> initialized at based on what the code does.  It would be IMO an issue
> to hide this information, as they can offer hits about the moment when
> we've begun a connection.
> --
> Michael

With v2, slot_name, sender_host, sender_port, and conninfo are already left 
NULL while the receiver is in CONNECTING state. I feel we don't have to show 
the timestamp fields either. Since the columns are named last_msg_send_time and 
last_msg_receipt_time, users may naturally interpret them as the last time a 
message was sent to or received from
the primary. If we show the standby server start time in those columns, I am 
afraid that could be confusing.

But I think it might be useful to show the *_lsn and *_tli values in CONNECTING 
state if they are available.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/






Reply via email to