diff options
author | Alexander Korotkov <akorotkov@postgresql.org> | 2024-08-10 21:43:02 +0300 |
---|---|---|
committer | Alexander Korotkov <akorotkov@postgresql.org> | 2024-08-10 21:43:02 +0300 |
commit | 867d396ccd2a7f0ce55e1fa7ebda00bc8c81147b (patch) | |
tree | 2af07b058abba4f384d06781a952203e1c250842 /doc/src | |
parent | bbf668d66fbf61d45f1c187b08a5f51537bfb7c7 (diff) | |
download | postgresql-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.sgml | 9 |
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 |