From: | Fujii Masao <fujii(at)postgresql(dot)org> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Fix failure of archive recovery with recovery_min_apply_delay en |
Date: | 2019-10-18 13:37:02 |
Message-ID: | E1iLSRC-0008LV-Ca@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix failure of archive recovery with recovery_min_apply_delay enabled.
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
Branch
------
REL_11_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/f7b70700bc44d4a7e5de143c6906e2421dd0c709
Modified Files
--------------
src/backend/access/transam/xlog.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Fujii Masao | 2019-10-18 13:37:31 | pgsql: Fix failure of archive recovery with recovery_min_apply_delay en |
Previous Message | Fujii Masao | 2019-10-18 13:36:26 | pgsql: Fix failure of archive recovery with recovery_min_apply_delay en |