When run a cluster with sync replication, if DML is done on primary, but primary is isolated from all slave, then the DML will hang, if cancel it DML, it will say:
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby
So the workflow is
1: commit to local.
2: waiting for ACK from remote sync.
When cancel the DML at step 2. the data are arealy on local, that's why it's warning.
But when runs an insert which is waiting for remote ACK, and then query from another session, I didn't find that row. Why this happen? If the insert is already one locally, whey another session can't read it?