Re: Synchronous Replication: Where is data visible first? - Mailing list pgsql-admin

From David G. Johnston
Subject Re: Synchronous Replication: Where is data visible first?
Date
Msg-id CAKFQuwYUpW=LVcmjte1tqS9OhoskvFLPwLoxoMtnw8o5tW4UOw@mail.gmail.com
Whole thread Raw
In response to Synchronous Replication: Where is data visible first?  (P C <puravc@gmail.com>)
Responses Re: Synchronous Replication: Where is data visible first?
List pgsql-admin
On Wednesday, January 10, 2024, P C <puravc@gmail.com> wrote:
Hello,

While discussing with the development team, an interesting question came up: in a synchronous streaming replication scenario, with synchronous_commit = remote_apply, will the change be first visible on Standby (replica)? Primary will wait till the change is applied and committed on standby, and hence logically this looks to be correct. But I couldn't find this mentioned explicitly anywhere and hence seeking comments from the community.

IIUC, no, the standbys can never reflect a newer state than what would be seen on the primary.  The state of a given transaction, including most importantly the locking surrounding it, exists first on the primary and then is replicated to the secondary.  Either the locking will prevent a dirty read or the dirty read will see the unconfirmed but committed data on the primary.  The locking will be removed on the primary strictly before the standbys.

David J.

pgsql-admin by date:

Previous
From: P C
Date:
Subject: Synchronous Replication: Where is data visible first?
Next
From: Akheel TechDL
Date:
Subject: Cascading a logical standby for physical replication