On 2020/03/20 15:22, Atsushi Torikoshi wrote:

On Fri, Mar 6, 2020 at 10:18 PM Fujii Masao <masao.fu...@oss.nttdata.com 
<mailto:masao.fu...@oss.nttdata.com>> wrote:


    OK, so patch attached.

    This patch causes, if a promotion is triggered while recovery is paused,
    the paused state to end and a promotion to continue. OTOH, this patch
    makes pg_wal_replay_pause() and _resume() throw an error if it's executed
while a promotion is ongoing.
    Regarding recovery_target_action, if the recovery target is reached
    while a promotion is ongoing, "pause" setting will act the same as 
"promote",
    i.e., recovery will finish and the server will start to accept connections.

    To implement the above, I added new shared varible indicating whether
    a promotion is triggered or not. Only startup process can update this shared
    variable. Other processes like read-only backends can check whether
    promotion is ongoing, via this variable.

    I added new function PromoteIsTriggered() that returns true if a promotion
    is triggered. Since the name of this function and the existing function
    IsPromoteTriggered() are confusingly similar, I changed the name of
    IsPromoteTriggered() to IsPromoteSignaled, as more appropriate name.


I've confirmed the patch works as you described above.
And I also poked around it a little bit but found no problems.

Thanks for the review!
Barrying any objection, I will commit the patch.

Regards,

--
Fujii Masao
NTT DATA CORPORATION
Advanced Platform Technology Group
Research and Development Headquarters


Reply via email to