EDB Postgres Distributed 5.6.0 release notes v5.6
Released: 15 October 2024
EDB Postgres Distributed 5.6.0 includes a number of enhancements and bug fixes.
Highlights
- Improved observability with new monitoring functions and SQL views.
- Improvements to commit scopes including:
- GROUP COMMIT and SYNCHRONOUS COMMIT support graceful degrading using DEGRADE ON.
- ORIGIN_GROUP support and commit scope inheritance simplify commit scope creation.
- Improved synchronous commit behavior around deadlocks.
- Metrics for commit scope performance and state.
- Optimized Topology support for Subscriber-only groups and nodes. (preview)
- Improved Postgres compliance with support for:
- Exclusion Constraints
- REINDEX replications
- createrole_self_grant
- column reference in DEFAULT expressions
- CREATE SCHEMA AUTHORIZATION
- Streaming Transaction support with Decoding Worker.
Enhancements
Component | Version | Description | Addresses |
---|---|---|---|
BDR | 5.6.0 | Decoding Worker supports Streaming TransactionsOne of the main advantages of streaming is that the WAL sender sends the partial transaction before it commits, which reduces replication lag. Now, with streaming support, the WAL decoder does the same thing, but it streams to the LCRs segments. Eventually, the WAL sender will read the LCRs and mimic the same behavior of streaming large transactions before they commit. This provides the benefits of decoding worker, such as reduced CPU and disk space, as well as the benefits of streaming, such as reduced lag and disk space, since ".spill" files are not generated. The WAL decoder always streams the transaction to LCRs, but based on downstream requests, the WAL sender either streams the transaction or just mimics the normal BEGIN..COMMIT scenario. In addition to the normal LCRs segment files, we create streaming files with the starting names | |
BDR | 5.6.0 | Introduce several new monitoring viewsThere are several view providing new information as well as making some existing information easier to discover:
| |
BDR | 5.6.0 | Support conflict detection for exclusion constraintsThis allows defining | |
BDR | 5.6.0 | Detect and resolve deadlocks between synchronous replication wait-for-disconnected sessions and replication writer.This will cancel synchronous replication wait on disconnected sessions if it deadlocks against replication, preventing deadlocks on failovers when using synchronous replication. This only affects commit scopes, not synchronous replication configured via | |
BDR | 5.6.0 | Add bdr.bdr_show_all_file_settings() and bdr.bdr_file_settings viewFix: Correct privileges for bdr_superuser. Creating wrapper SECURITY DEFINER functions in the bdr schema and granting access to bdr_superuser to use those:
| |
BDR | 5.6.0 | Add create/drop_commit_scope functionsAdd functions for creating and dropping commit scopes that will eventually deprecate the non-standard functions for adding and removing commit scopes. Notify the user that these will be deprecated in a future version, suggesting the use of the new versions. | |
BDR | 5.6.0 | Grant additional object permissions to role "bdr_monitor".Permissions for the following objects have been updated to include SELECT permissions for role "bdr_monitor": bdr.node_config | |
BDR | 5.6.0 | Add | 40412 |
BDR | 5.6.0 | Add "node_name" to "bdr.node_config_summary"Add "node_name" to the view "bdr.node_config_summary". This makes it consistent with other summary views, which report the name of the object (node, group, etc.) for which the summary is being generated. | |
BDR | 5.6.0 | bdr_init_physical: improve local node connection failure loggingEnsure that bdr_init_physical emits details about connection failure if the "--local-dsn" parameter is syntactically correct but invalid, e.g., due to an incorrect host or port setting. | |
BDR | 5.6.0 |
| |
BDR | 5.6.0 | Enhance warning messagesEnhance messages issued during DML and DDL lock acquisition. | |
BDR | 5.6.0 | Do not send Raft snapshot very aggressivelyAvoid sending Raft snapshots too frequently as it can slow down follower nodes. Limit the snapshot rate to once in every election timeout, unless there is no other communication between the nodes, in which case send a snapshot every 1/3rd of the election timeout. This will help all nodes keep pace with the leader and improve CPU utilization. | 37725 |
BDR | 5.6.0 | Group-Specific Configuration OptionsIt is now possible to set akk top-level and subgroup level options. The following options are available for top-both groups:
| 37725 |
BDR | 5.6.0 | Subscriber-only node groups have a leaderSubscriber-only node groups have a leader elected by top-level Raft. There is now a bdr.leader catalog that tracks leadership of subgroups and subscriber-only nodes. If the node that is the leader of a subscriber-only node group goes down or becomes unreachable, a new leader is elected from that group. | |
BDR | 5.6.0 | Optimized topology for subscriber-only nodes via the leader of the subscriber-only node groupSubscriber-only nodes earlier used to have subscriptions to each data node. Now if optimized topology is enabled, only the leaders of subscriber-only node groups have subscriptions to routing leaders of data node subsgroups. The subscriber only nodegroup leaders route data to other nodes of that subscriber-only nodegroup. This reduces the load on all data nodes so they do not have to send data to all subscriber-only nodes. The GUC | |
BDR | 5.6.0 | Introduce new subscription types to support optimized topologyNew subscription types that forward data from all nodes of the subgroup via a routing leader (mode: l), and those that forward data from the entire cluster via a subscriber-only group leader (mode: w) are introduced. | |
BDR | 5.6.0 | Introduce version number and timestamp for write leaderA write leader has a version. Every time a new leader is elected, the version is incremented and timestamp noted via Raft. This is to build a foundation for better conflict resolution. | |
BDR | 5.6.0 | Allow use of column reference in DEFAULT expressionsUsing column references in default expressions is now supported, this is particularly useful with generated columns, for example: | |
BDR | 5.6.0 | Support replication of REINDEXBoth REINDEX and REINDEX CONCURRENTLY are now replicated commands. | |
BDR | 5.6.0 | Fix receiver worker being stuck when exitingReceiver worker could get stuck when exiting, waiting for a writer that never actually started. This could on rare occasions break replication after configuration changes until Postgres was restarted. | |
BDR | 5.6.0 | Reduce performance impact of PGD specific configuration parameters that are sent to clientChanges to values of variables | |
BDR | 5.6.0 | Allow use of commit scopes defined in parent groupsWhen there is a commit scope defined for top-level group, it can be used by any node in a subgroup and does not need to be redefined for every subgroup anymore. This is particularly useful when combined with | |
PGD CLI | 5.6.0 | Use bdr.bdr_file_settings view in verify-settingsUse bdr.bdr_file_settings view to get the current settings for the proxy. |
Bug Fixes
Component | Version | Description | Addresses |
---|---|---|---|
BDR | 5.6.0 | Fixed buffer overrun in the writerInclude an extra zero byte at the end of a column value allocation in shared memory queue insert/update/delete messages. | 98966 |
BDR | 5.6.0 | Fixes for some race conditions to prevent node sync from entering a hung state with the main subscription disabled. | |
BDR | 5.6.0 | Do not accidentally drop the autopartition rule when a column of the autopartitioned table is dropped.When ALTER TABLE .. DROP COLUMN is used, the object_access_hook is fired with Therefore, we need to check the subId field to make sure that we are not performing actions that should only be triggered when a table is dropped. | 40258 |
BDR | 5.6.0 | Adjust | 40258 |
BDR | 5.6.0 | Prevent a node group from being created with a duplicate nameEnsure that a nodegroup is not inadvertently created with the same name as an existing nodegroup. Failure to do so may result in a complete shutdown of the top-level Raft on all nodes, with no possibility of recovery. | |
BDR | 5.6.0 | Prevent spurious "local info ... not found" errors when parting nodesHandle the absence of the expected node record gracefully when a node is being removed, the local node record might have already been deleted, but an attempt could be made to update it anyway. This resulted in harmless "BDR node local info for node ... not found" errors. | |
BDR | 5.6.0 | Prevent a corner-case situation from being misdiagnosed as a PGD version problemImprove Raft error messages to handle cases where nodes may not be correctly participating in Raft. | |
BDR | 5.6.0 | Handling duplicate requests in RAFT preventing protocol breakageWhen processing RAFT entries, it's crucial to handle duplicate requests properly to prevent Raft protocol issues. Duplicate requests can occur when a client retries a request that has already been accepted and applied by the Raft leader. The problem arose when the leader failed to detect the duplicate request due to historical evidence being pruned. | 37725 |
BDR | 5.6.0 | Handling Raft Snapshots: Consensus LogWhen installing or importing a Raft snapshot, discard the consensus log unless it contains an entry matching the snapshot's last included entry and term. | 37725 |
BDR | 5.6.0 | Be more restrictive about which index to use during replication for REPLICA IDENTITY FULL tablesThis fixes various index related errors during replication like: 'could not lookup equality operator for type, optype in opfamily' or 'function "amgettuple" is not defined for index "brinidx"' | |
BDR | 5.6.0 | Support | |
BDR | 5.6.0 | Allow | |
BDR | 5.6.0 | Use base type instead of domain type while casting valuesThis prevents errors when replicating UPDATEs for domains defined as NOT VALID where tables contain data which would not be allowed by current definition of such domain. | |
Utilities | 5.6.0 | bdr_pg_upgrade - Create logical slot with twophase set to true for PG 14+ |
- On this page
- Highlights
- Enhancements
- Bug Fixes