• Fujii Masao's avatar
    Prefer standby promotion over recovery pause. · 496ee647
    Fujii Masao authored
    Previously if a promotion was triggered while recovery was paused,
    the paused state continued. Also recovery could be paused by executing
    pg_wal_replay_pause() even while a promotion was ongoing. That is,
    recovery pause had higher priority over a standby promotion.
    But this behavior was not desirable because most users basically wanted
    the recovery to complete as soon as possible and the server to become
    the master when they requested a promotion.
    
    This commit changes recovery so that it prefers a promotion over
    recovery pause. That is, if a promotion is triggered while recovery
    is paused, the paused state ends and a promotion continues. Also
    this commit makes recovery pause functions like pg_wal_replay_pause()
    throw an error if they are executed while a promotion is ongoing.
    
    Internally, this commit adds new internal function PromoteIsTriggered()
    that returns true if a promotion is triggered. Since the name of
    this function and the existing function IsPromoteTriggered() are
    confusingly similar, the commit changes the name of IsPromoteTriggered()
    to IsPromoteSignaled, as more appropriate name.
    
    Author: Fujii Masao
    Reviewed-by: Atsushi Torikoshi, Sergei Kornilov
    Discussion: https://postgr.es/m/00c194b2-dbbb-2e8a-5b39-13f14048ef0a@oss.nttdata.com
    496ee647
xlogfuncs.c 20.8 KB