Synchronous Commit v5.6.1
Documentation improvements are made only to the latest version.
As per semantic versioning, PGD minor releases remain backward compatible and may include important bug fixes and enhancements.
We recommend upgrading the latest minor release as soon as possible.
If you want up-to-date information, read the latest PGD documentation.
Commit scope kind: SYNCHRONOUS COMMIT
Overview
PGD's SYNCHRONOUS COMMIT is a commit scope kind that works in a way that's more like PostgreSQL's synchronous_commit option in its underlying operation. Unlike the PostgreSQL option, though, it's configured as a commit scope and is easier to configure and interact with in PGD. 
Unlike other commit scope kinds, such as GROUP COMMIT and CAMO, the transactions in a SYNCHRONOUS COMMIT operation aren't transformed into a two-phase commit (2PC) transaction. They work more like a Postgres synchronous_commit.
Example
In this example, when this commit scope is in use, any node in the left_dc group uses SYNCHRONOUS COMMIT to replicate changes to the other nodes in the left_dc group. It looks for a majority of nodes in the left_dc group to confirm that they committed the transaction.
SELECT bdr.create_commit_scope(
    commit_scope_name := 'example_sc_scope',
    origin_node_group := 'left_dc',
    rule := 'MAJORITY (left_dc) SYNCHRONOUS COMMIT',
    wait_for_ready := true
);Configuration
SYNCHRONOUS COMMIT supports the optional DEGRADE ON clause. See the SYNCHRONOUS COMMIT commit scope reference for specific configuration parameters or see this section regarding Degrade on options.
Confirmation
| Confirmation level | PGD Synchronous Commit handling | 
|---|---|
received | A remote PGD node confirms the transaction once it's been fully received and is in the in-memory write queue. | 
replicated | Same behavior as received. | 
durable | Confirms the transaction after all of its changes are flushed to disk. Analogous to synchronous_commit = on in legacy synchronous replication. | 
visible (default) | Confirms the transaction after all of its changes are flushed to disk and it's visible to concurrent transactions. Analogous to synchronous_commit = remote_apply in legacy synchronous replication. | 
Details
Currently SYNCHRONOUS COMMIT doesn't use the confirmation levels of the commit scope rule syntax.
In commit scope rules, the original keyword SYNCHRONOUS_COMMIT is now aliased to SYNCHRONOUS COMMIT. The use of a space instead of an underscore helps distinguish it from Postgres's native SYNCHRONOUS_COMMIT.
- On this page
 - Overview
 - Example
 - Configuration
 - Confirmation
 - Details