improve pg_receivewal code
От | Bharath Rupireddy |
---|---|
Тема | improve pg_receivewal code |
Дата | |
Msg-id | CALj2ACX00YYeyBfoi55Cy=NrP-FcfMgiYYx1qRUEib3yjCVoaA@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: improve pg_receivewal code
Re: improve pg_receivewal code |
Список | pgsql-hackers |
Hi, I see there's a scope to do following improvements to pg_receivewal.c: 1) Fetch the server system identifier in the first RunIdentifySystem call and use it to identify(via pg_receivewal's ReceiveXlogStream) any unexpected changes that may happen in the server while pg_receivewal is connected to it. This can be helpful in scenarios when pg_receivewal tries to reconnect to the server (see the code around pg_usleep with RECONNECT_SLEEP_TIME) but something unexpected has happnend in the server that changed the its system identifier. Once the pg_receivewal establishes the conenction to server again, then the ReceiveXlogStream has a code chunk to compare the system identifier that we received in the initial connection. 2) Move the RunIdentifySystem to identify timeline id and start LSN from the server only if the pg_receivewal failed to get them from FindStreamingStart. This way, an extra IDENTIFY_SYSTEM command is avoided. 3) Place the "replication connetion shouldn't have any database name associated" error check right after RunIdentifySystem so that we can avoid fetching wal segment size with RetrieveWalSegSize if at all we were to fail with that error. This change is similar to what pg_recvlogical.c does. 4) Move the RetrieveWalSegSize to just before pg_receivewal.c enters main loop to get the wal from the server. This avoids an unnecessary query for pg_receivewal with "--create-slot" or "--drop-slot". 5) Have an assertion after the pg_receivewal done a good amount of work to find start timeline and LSN might be helpful: Assert(stream.timeline != 0 && stream.startpos != InvalidXLogRecPtr); Attaching a patch that does take care of above improvements. Thoughts? Regards, Bharath Rupireddy.
Вложения
В списке pgsql-hackers по дате отправления: