aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorAlexander Korotkov <akorotkov@postgresql.org>2024-08-10 21:43:02 +0300
committerAlexander Korotkov <akorotkov@postgresql.org>2024-08-10 21:43:02 +0300
commit867d396ccd2a7f0ce55e1fa7ebda00bc8c81147b (patch)
tree2af07b058abba4f384d06781a952203e1c250842 /doc/src
parentbbf668d66fbf61d45f1c187b08a5f51537bfb7c7 (diff)
downloadpostgresql-867d396ccd2a7f0ce55e1fa7ebda00bc8c81147b.tar.gz
postgresql-867d396ccd2a7f0ce55e1fa7ebda00bc8c81147b.zip
Adjust pg_wal_replay_wait() procedure behavior on promoted standby
pg_wal_replay_wait() is intended to be called on standby. However, standby can be promoted to primary at any moment, even concurrently with the pg_wal_replay_wait() call. If recovery is not currently in progress that doesn't mean the wait was unsuccessful. Thus, we always need to recheck if the target LSN is replayed. Reported-by: Kevin Hale Boyes Discussion: https://postgr.es/m/CAPpHfdu5QN%2BZGACS%2B7foxmr8_nekgA2PA%2B-G3BuOUrdBLBFb6Q%40mail.gmail.com Author: Alexander Korotkov
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/func.sgml9
1 files changed, 9 insertions, 0 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 0f7154b76ab..968a9985527 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -28970,6 +28970,15 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset
</para>
<para>
+ <function>pg_wal_replay_wait</function> should be called on standby.
+ If a user calls <function>pg_wal_replay_wait</function> on primary, it
+ will error out. However, if <function>pg_wal_replay_wait</function> is
+ called on primary promoted from standby and <literal>target_lsn</literal>
+ was already replayed, then <function>pg_wal_replay_wait</function> just
+ exits immediately.
+ </para>
+
+ <para>
You can use <function>pg_wal_replay_wait</function> to wait for
the <type>pg_lsn</type> value. For example, an application could update
the <literal>movie</literal> table and get the <acronym>lsn</acronym> after