Start Walreceiver completely before shut down it on standby server. - Mailing list pgsql-hackers

From jiankang liu
Subject Start Walreceiver completely before shut down it on standby server.
Date
Msg-id CAJ+DhQaf9ZMkqPPnapu06mvMFe-b_K4NGF+-MV+e=JB2edF4cQ@mail.gmail.com
Whole thread Raw
Responses Re: Start Walreceiver completely before shut down it on standby server.  (Ashwin Agrawal <aagrawal@pivotal.io>)
List pgsql-hackers
Start Walreceiver completely before shut down it on standby server.

The walreceiver will be shut down, when read an invalid record in the
WAL streaming from master.And then, we retry from archive/pg_wal again.

After that, we start walreceiver in RequestXLogStreaming(), and read
record from the WAL streaming. But before walreceiver starts, we read
data from file which be streamed over and present in pg_wal by last
time, because of walrcv->receivedUpto > RecPtr and the wal is actually
flush on disk. Now, we read the invalid record again, what the next to
do? Shut down the walreceiver and do it again.

So, we always read the invalid record, starting the walreceiver and make
it down before it starts completely.

This code fix it by set the walrcv->receivedUpto to the starting point,
we can read nothing before the walreceiver starts and streaming.
Attachment

pgsql-hackers by date:

Previous
From: Noah Misch
Date:
Subject: Re: Windows UTF-8, non-ICU collation trouble
Next
From: Rushabh Lathia
Date:
Subject: Re: backup manifests