Released: 10 June 2026
New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.44.0 include the following:
Highlights
- Support for upgrading components in a PGD-X cluster
- Improved robustness of PGD upgrades
- The EFM user is no longer a superuser by default
Enhancements
| Description | Addresses |
|---|---|
TPA now supports upgrade of components in the PGD-X architecture.In the upgrade playbook for PGD-X, additional steps that ensure the upgrade of selected components (PgBouncer, pg-backup-api, Barman, PEM server) via tpaexec ( | |
TPA can now deploy the EFM database user with only the minimum required permissions.On a regular EFM deployment, TPA granted the EFM user SUPERUSER privileges. A new variable called The variable acts as a switch and can be toggled with a regular deployment, and can be used on already deployed clusters to switch the privileges of the EFM user. | |
TPA now supports Ansible Automation Platform 2.6.TPA is now tested with AAP 2.6. Existing execution environments are compatible with both AAP 2.4 and AAP 2.6. | |
Added support for proxy monitoring during PGD 5 to PGD 6 upgrades.The | |
TPA now supports non-default hugepage sizes.TPA's hugepages settings previously assumed the architecture's default page size (2MB on x86_64), so a configuration that wanted Postgres to use 1GB hugepages required the user to set the kernel command line, the | |
Added an environment variable option to the repmgr service unit file.A new variable called The This is useful in environments where the repmgr process requires access to specific runtime values, such as custom library paths or authentication credentials. | 56200 |
Added supported cluster_vars overrides for TPA's choice of Python interpreter and packages.Two new (or newly-effective) cluster_vars now control how TPA uses Python on cluster nodes:
See | |
TPA now supports enable_proxy_monitoring during PGD 6 minor upgrades.The | |
Improved restart and service excluded_tasks coverage.TPA now respects the Previously, users excluding | |
| |
TPA now supports enable_proxy_monitoring for PGD 5 minor upgrades.The enable_proxy_monitoring option now works during PGD 5 minor version upgrades in PGD-Always-ON clusters. Previously, proxy monitoring was only supported during BDR 4 to PGD 5 major upgrades. When enabled, the proxy monitor tracks connection availability through pgd-proxy endpoints throughout the upgrade process and reports any interruptions. |
Changes
| Description | Addresses |
|---|---|
Replaced upgrade_legacy.yml with a dedicated upgrade_major_4to5.yml playbook.The BDR 4→5 major upgrade logic has been extracted from the monolithic upgrade_legacy.yml into a dedicated playbook. This simplifies the upgrade path by removing all conditional branching, hardcoding harp as the failover manager and upgrade_from as version 4. The now-orphaned upgrade_legacy.yml files have been removed from PGD-Always-ON and Lightweight architectures. | |
Added a dedicated upgrade_minor_5.yml playbook for BDR 5.x minor upgrades.This new playbook handles all BDR 5.x minor upgrades. This uses the relevant logic previously embedded in the monolithic upgrade_legacy.yml, making the upgrade process easier to maintain. | |
TPA no longer passes empty --team and --owner to pemworker.When registering a Postgres server with PEM, TPA previously passed | |
Documented how to run custom playbooks on AAP.The AAP user documentation now explains how to add custom playbooks to a cluster and run them through AAP, using the | |
Added missing flags to the tpaexec help output.'tpaexec help' was missing some flags that are actually supported. This change adds those flags to the help output. | |
TPA now rejects pgaudit on EPAS clusters at the start of deploy.Including | |
Added {stop,start,list}-containers to the tpaexec --help output.The already implemented options for managing docker containers in tpaexec were featured in the documentation but not in the output of |
Bug Fixes
| Description | Addresses |
|---|---|
Fixed an issue whereby tpaexec reconfigure would not add postgres_distributed during BDR 4 to BDR 5 upgrades.The | |
Fixed an issue whereby standby nodes could be promoted to BDR primary candidates.An issue was found where standby nodes could be selected as BDR primary candidates during deployment, which could lead to unintended consequences in some cluster scenarios (for example, when joining BDR node groups via standby nodes). This fix ensures that standby nodes are excluded from the list of potential BDR primary candidates. | |
Fixed an issue whereby SLES 15 deployments failed when featuring patroni with EDBPGE and EPAS.When selecting patroni as the failover manager with the EDBPGE/EPAS PostgreSQL flavour, the modules needed to install etcd-related packages were missing, and some additional adjustments were required to make the deployment work correctly. This fix ensures that the required packages are installed when deploying on SLES 15 with patroni as the failover manager, alongside some minor adjustments. | |
Fixed an issue where requesting PEM agent <9.6 would cause deployment to fail.TPA uses the | |
Fixed an issue whereby pgd-cli tasks would run when pgd-cli was not upgraded.During a postgres-only upgrade (the default), the tasks that log pgd-cli diagnostic output and wait for write leader elections were always executed on the first BDR primary, even when pgd-cli had not been upgraded as part of that run. This caused the upgrade to fail with "unknown command show-groups" because the old pgd-cli binary does not support that subcommand. Both tasks are now skipped unless pgdcli or all components are included in the upgrade. | |
Updated default AWS AMIs to currently-available images.The default AWS AMIs that | |
TPA now derives bdr_version_num automatically from installed BDR/PGD packages.TPA uses bdr_version_num to make precise decisions about CAMO configuration. Previously this value was obtained only by querying the running database, so on an initial deploy (when Postgres is not yet running) parts of the CAMO configuration could not be rendered correctly, and users had to set bdr_version_num manually in config.yml as a workaround. TPA now derives bdr_version_num from the version of the installed BDR or PGD package on each node, so no manual setting is required. A value set in config.yml continues to take precedence, and once the database is running the precise value reported by bdr.bdr_version_num() remains authoritative. | |
Stabilised the post-upgrade health check for PGD 6 minor upgrades.After the last rolling restart of a PGD 6 minor upgrade, BDR replication slots can briefly remain inactive while they re-handshake with the just-updated node. The post-upgrade | |
Fixed an issue with custom rc-local service creation.TPA creates a custom systemd service file to ensure the rc-local script is running on startup on distributions that don't support it out of the box. This fix changes the location of the service file to comply with conventions and avoid failures with a missing parent folder that could happen with the previously chosen path. This fix also ensures that this service file creation task is only applied when it is actually needed. | |
TPA now normalises Postgres Extended to | |
Fixed an issue whereby read_listen_port was added to config for BDR versions below 5.5.tpaexec configure added read_listen_port to default_pgd_proxy_options even for older BDR versions. A deploy-time assertion was also added to catch a missing read_listen_port when upgrading to PGD 5.5 or later. | |
TPA now rejects invalid cluster names at configure time.Previously, | |
Upgrade playbooks now use systemctl instead of pgrep.Major and minor PGD upgrade playbooks used The checks now use | |
TPA now omits pgaudit from CIS compliance on EPAS clusters.Previously, | |
TPA now fails deploy when pgbouncer and pgd-proxy share a listen port.When an instance had both TPA now rejects this configuration at deploy time with a clear message naming the affected host and the two variables involved ( | |
TPA now installs pgd-cli on pgd-proxy nodes during the 4to5 upgrade.The BDR-Always-ON to PGD-Always-ON upgrade adds the pgd-proxy role to former harp-proxy nodes, but pgd-cli was never installed on those nodes during the upgrade. The post-upgrade diagnostic then failed with "No such file or directory". The pgdcli-upgrade plays now also target pgd-proxy hosts, so pgd-cli is in place when the diagnostic runs. | |
Fixed an issue whereby automatic witness node addition did not work for PGD-X clusters with even data nodes.When configuring a PGD-X cluster with an even number of | 59694 |
TPA now includes the correct mod_wsgi module for PEM server version 10.4.0 and higher.This change ensures that the correct mod_wsgi module is included for PEM server versions 10.4.0 and higher, while preserving the existing behaviour for earlier versions. | |
TPA now includes additional modules to deploy EPAS in SLES 15.When deploying a SLES 15 cluster, PackageHub registration is now performed as part of the initial system registration for both EPAS and PEM installations. Additionally, two new modules (sle-module-desktop-applications and sle-module-development-tools) are now enabled for EPAS deployments in order to install dependencies such as libclang13. | |
TPA now auto-creates the switch2cm.yml link on older cluster directories.
| |
Fixed an issue whereby HARP manager symlink creation failed on nodes 2+ during upgrade.During a rolling upgrade to edbpge, the task that creates a symlink at /var/run/postgresql/.s.PGSQL.<port> for HARP manager to connect to the database would fail on all nodes after the first with "refusing to convert from file to symlink". The destination path could hold a real socket file left behind by the pre-upgrade postgres (either from a flavour migration or from an unclean stop). Adding force: true to the symlink task in all affected upgrade playbooks ensures the symlink is created correctly regardless of the prior state of that path. | |
Introduced retry logic between BDR replication slots when upgrading.When upgrading the postgresql package version in a BDR cluster, replication slots may take a few seconds to reconnect, and the upgrade process can have an exit error due to not allocating enough time to the recovery process. The fix adds retry logic to the health check on the upgrade process to allow time for the slots to recover and avoid timing-related failures. | |
TPA now reports a clear error when --location-names doesn't match the architecture's requirement.Previously, supplying | |
Fixed an issue whereby PGD-X demanded too many hostnames in --hostnames-from.Configuring a PGD-X cluster with --hostnames-from used to fail with "found only N/16 names matching …" whenever the supplied file held fewer than 16 names, even when the cluster only needed a handful. The underlying PGD-X architecture now computes the real number of instances it will build (data + witness + barman nodes per location, plus an optional witness-only location and a pemserver if requested), so --hostnames-from accepts a correctly-sized file and no longer requires padding it out to 16 entries. | |
Fixed an issue whereby CAMO configuration was incorrectly added to config.yml.When configuring a PGD-X cluster with --data-nodes-per-location 2 without explicitly enabling CAMO via --enable-camo, the generated config.yml would incorrectly include CAMO commit scopes and partner assignments. This resulted in unexpected CAMO configuration being applied to clusters that did not request it. CAMO configuration is now only generated when --enable-camo is explicitly passed to tpaexec configure. | 59694 |
Fixed an issue whereby PGD 5/6 minor and 5-to-6 major upgrades occasionally left nodes fenced.During a node-by-node upgrade, the "Wait for write leader elections to complete" task could time out because nodes that had been fenced earlier in the loop were never unfenced: the unfence step did not always see the node's updated state and was wrongly skipped, leaving the node fenced. TPA now waits for the node to rejoin Raft consensus and refreshes its state before unfencing, so nodes are reliably unfenced and the upgrade can proceed. | |
Improved error output for | |
Fixed an issue whereby tpaexec configure crashed when --overrides-from was supplied.Running | |
| |
TPA now configures max_active_replication_origins for PostgreSQL 18+ PGD clusters.TPA now sets the max_active_replication_origins parameter for PGD clusters on PostgreSQL 18 and above, using "3 * number_of_nodes + 3" — a safety-margin formula above the "3 origins per peer node" minimum recommended by the EDB PGD documentation. This prevents PGD node join failures caused by the default value being too low for multi-node clusters. | |
TPA now sets path_prefix per backup server in the barman configuration.Barman's path_prefix was previously set only as a global value in barman.conf, using the postgres binary directory of the barman host itself. This caused incorrect behaviour in mixed-version scenarios (during rolling upgrades, or when the barman host runs a different PostgreSQL major version than the nodes it backs up). path_prefix is now also written per backup server in /etc/barman.d/<backup>.conf, resolving from the backed-up node's own postgres_bin_dir. This ensures barman uses the correct client binaries for each node it backs up. The global path_prefix in barman.conf is unchanged and continues to serve as the default for same-version scenarios. When the backed-up node's PostgreSQL version differs from the barman host's, the matching client packages are now installed on the barman host automatically so the per-server path_prefix resolves to real binaries. The barman host must have repository access for the additional PostgreSQL version (typically the case with EDB enterprise repositories). An explicit per-instance override is also available by setting barman_path_prefix in a node's vars in config.yml. |
Deprecations
| Description | Addresses |
|---|---|
Removed the deprecated |