aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2019-10-18 22:24:18 +0900
committerFujii Masao <fujii@postgresql.org>2019-10-18 22:25:42 +0900
commit03666dfa1817ef602ef982a766b983efd43c460f (patch)
treee2a4c495022acd38d59965eb3da8f1d38c268b47
parent954b9c195999d4b891e1ece656e878f2c4f876ce (diff)
downloadpostgresql-03666dfa1817ef602ef982a766b983efd43c460f.tar.gz
postgresql-03666dfa1817ef602ef982a766b983efd43c460f.zip
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 a85aa835d38..861297bda5e 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?
*