diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml index b24bb2ec45f..7253f9d8287 100644 --- a/doc/src/sgml/high-availability.sgml +++ b/doc/src/sgml/high-availability.sgml @@ -1409,9 +1409,9 @@ synchronous_standby_names = 'ANY 2 (s1, s2, s3)' - This is achieved by the following steps. After performing write - operations, the application retrieves the current WAL location using a - function call like this. + This is achieved by the following steps. Once the write transaction + has committed, the application retrieves a WAL location from the + primary using a function call like this. postgres=# SELECT pg_current_wal_insert_lsn(); @@ -1438,8 +1438,9 @@ postgres=# WAIT FOR LSN '0/306EE20'; (1 row) Once the command returns a status of success, it guarantees that all - changes up to the provided LSN have been applied, - ensuring that subsequent read queries will reflect the latest updates. + changes up to the provided LSN have been applied. + Therefore, if that LSN was retrieved from the primary + after the commit, subsequent read queries will reflect those updates. diff --git a/doc/src/sgml/ref/wait.sgml b/doc/src/sgml/ref/wait.sgml index 68ca7101eba..cddcbf09695 100644 --- a/doc/src/sgml/ref/wait.sgml +++ b/doc/src/sgml/ref/wait.sgml @@ -312,7 +312,9 @@ WAIT FOR LSN 'lsn' mode. The standby_replay mode waits for the LSN to be replayed (applied to the database), which is useful to achieve read-your-writes consistency while using an async - replica for reads and the primary for writes. The + replica for reads and the primary for writes, provided that the target + LSN is at or after the end of the relevant write + transaction's COMMIT record on the primary. The standby_flush mode waits for the WAL to be flushed to durable storage on the replica, or to have already been replayed from WAL present on the standby. The standby_write mode @@ -370,9 +372,13 @@ WAIT FOR LSN 'lsn' You can use the WAIT command to wait for the pg_lsn value. For example, an application could update - the movie table and get the lsn after - changes just made. This example uses pg_current_wal_insert_lsn - on primary server to get the lsn given that + the movie table and get an lsn that + is at or after the end of the relevant write transaction's + COMMIT record. In the default autocommit mode shown + here, the UPDATE commits before the subsequent + SELECT. This example uses + pg_current_wal_insert_lsn on primary server to get + the lsn given that synchronous_commit could be set to off. @@ -387,8 +393,9 @@ postgres=# SELECT pg_current_wal_insert_lsn(); Then an application could run WAIT - with the lsn obtained from primary. After that the - changes made on primary should be guaranteed to be visible on replica. + with the lsn obtained from the primary after the + commit. After that, the changes made on the primary should be guaranteed + to be visible on the replica. postgres=# WAIT FOR LSN '0/0306EE20';