postgrespro.git / summary / log / commit / refs

commit    9b95a36be8be6c3a78b303bbe709c622dc312e87
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Fri Oct 18 13:24:18 2019 +0000

    Make crash recovery ignore recovery_min_apply_delay setting.
    
    In v11 or before, this setting could not take effect in crash recovery
    because it's specified in recovery.conf and crash recovery always
    starts without recovery.conf. But commit 2dedf4d9a8 integrated
    recovery.conf into postgresql.conf and which unexpectedly allowed
    this setting to take effect even in crash recovery. This is definitely
    not good behavior.
    
    To fix the issue, this commit makes crash recovery always ignore
    recovery_min_apply_delay setting.
    
    Back-patch to v12 where the issue was added.
    
    Author: Fujii Masao
    Reviewed-by: Michael Paquier
    Discussion: https://postgr.es/m/CAHGQGwEyD6HdZLfdWc+95g=VQFPR4zQL4n+yHxQgGEGjaSVheQ@mail.gmail.com
    Discussion: https://postgr.es/m/e445616d-023e-a268-8aa1-67b8b335340c@pgmasters.net


doc/src/sgml/config.sgml | 3 ++- src/backend/access/transam/xlog.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 47b12c6a8f..886632ff43 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -4209,7 +4209,8 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" </para> <para> This parameter is intended for use with streaming replication deployments; - however, if the parameter is specified it will be honored in all cases. + however, if the parameter is specified it will be honored in all cases + except crash recovery. <varname>hot_standby_feedback</varname> will be delayed by use of this feature which could lead to bloat on the master; use both together with care. diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 0ff9af53fe..0378b870bd 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5977,6 +5977,10 @@ recoveryApplyDelay(XLogReaderState *record) if (!reachedConsistency) return false; + /* nothing to do if crash recovery is requested */ + if (!ArchiveRecoveryRequested) + return false; + /* * Is it a COMMIT record? * [parent: 89403ed22858]