summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFujii Masao2019-10-18 13:24:18 +0000
committerFujii Masao2019-10-18 13:24:18 +0000
commit9b95a36be8be6c3a78b303bbe709c622dc312e87 (patch)
treee079aa8fd5c5fa4ae11a9ca0f9b86023f2eb08d8
parent89403ed228583c80c608310e68020229818836e6 (diff)
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
-rw-r--r--doc/src/sgml/config.sgml3
-rw-r--r--src/backend/access/transam/xlog.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 47b12c6a8f4..886632ff439 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 0ff9af53fef..0378b870bdc 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?
*