• Fujii Masao's avatar
    Fix failure of archive recovery with recovery_min_apply_delay enabled. · ec1259e8
    Fujii Masao authored
    recovery_min_apply_delay parameter is intended for use with streaming
    replication deployments. However, the document clearly explains that
    the parameter will be honored in all cases if it's specified. So it should
    take effect even if in archive recovery. But, previously, archive recovery
    with recovery_min_apply_delay enabled always failed, and caused assertion
    failure if --enable-caasert is enabled.
    
    The cause of this problem is that; the ownership of recoveryWakeupLatch
    that recovery_min_apply_delay uses was taken only when standby mode
    is requested. So unowned latch could be used in archive recovery, and
    which caused the failure.
    
    This commit changes recovery code so that the ownership of
    recoveryWakeupLatch is taken even in archive recovery. Which prevents
    archive recovery with recovery_min_apply_delay from failing.
    
    Back-patch to v9.4 where recovery_min_apply_delay was added.
    
    Author: Fujii Masao
    Reviewed-by: Michael Paquier
    Discussion: https://postgr.es/m/CAHGQGwEyD6HdZLfdWc+95g=VQFPR4zQL4n+yHxQgGEGjaSVheQ@mail.gmail.com
    ec1259e8
xlog.c 383 KB