Released: 25 September 2026
This release of EDB Postgres® AI for CloudNativePG™ Cluster includes the following:
Enhancements
| Description | Addresses |
|---|---|
Added | |
Added restoreAdditionalCommandArgs to .barmanObjectStore.data for in-tree Barman Cloud recoveries, so custom flags are forwarded to barman-cloud-restore during recovery. | #11278 |
Plugin authors no longer need to re-derive whether an empty WAL archive should be treated as an error: the operator now computes the check_empty_wal_archive decision once and passes it to CNPG-I plugins on both WAL archiving and restore hooks. | #11216 |
Allowed setting the | #11308 |
Added support for setting | #10899 |
Fixed PgBouncer metrics silently reporting zero when PgBouncer adds or reorders columns: | #11366, #11464 |
Added a --dry-run option to the backup command that prints the Backupresource that would be created, without creating it. | #11233 |
Security Fixes
| Description | Addresses |
|---|---|
Fixed a webhook validation bypass where an absolute extension path with an embedded | #11210 |
Updated google.golang.org/grpc to v1.83.1, fixing CVE-2026-84304 / GHSA-vp52-pcj8-j9qc (gRPC-Go heap memory exhaustion via HTTP/2 DATA frame fragmentation). | #11394 |
Changes
| Description | Addresses |
|---|---|
| Updated the default PostgreSQL operand image to 18.6-standard-ubi9. | #11257 |
Bug Fixes
| Description | Addresses |
|---|---|
Demoted an unreachable old primary immediately during failover, instead of waiting on checkpoint and fast-shutdown attempts that could never complete.Previously, an old primary whose PostgreSQL had become unresponsive was never shut down, so it could never rejoin the cluster as a replica of the new primary. The shutdown is now requested without blocking the reconciler, though demotion can still take up to a minute or more if PostgreSQL keeps ignoring shutdown signals. | #11347 |
Fixed failover and Pod recreation getting stuck while any instance in the cluster was fenced.A fenced instance kept reporting itself as healthy on its status endpoint even though its Pod was permanently not Ready, which blocked the readiness guard, the primary-election logic, and the Pod-reattachment gate from reacting to an unrelated failure elsewhere in the cluster, leaving it stalled until someone manually removed the fencing. All three now recognize and skip fenced instances. | #11274 |
Fixed a failover that could stall forever or get silently reverted.While a failover was pending, the reconciler could skip checking whether it was ready to complete, or mistake the pending state for a missing Pod and reset the target primary back to the unhealthy one. It now keeps progressing a pending failover and completes it once the WAL receivers are down, rechecking quorum safety right before promoting in case it changed while waiting. | #11336 |
Fixed the designated-primary sort in | #11494 |
Stopped abandoning a fast shutdown after 60 seconds.The request carried no explicit timeout, so | #11263 |
| Waited for certificate status before refreshing secrets during bootstrap. | #11450 |
Fixed in-tree Barman Cloud recovery ignoring wal.maxParallel and wal.restoreAdditionalCommandArgs, fetching WAL one segment at a time instead of using the configured parallelism. | #11105 |
Honored the unrecoverable annotation on pending and terminating instances. | #11241 |
Honored Backup.spec.online when finalizing VolumeSnapshot-based backups, so a cold backup is no longer reported as online in status. | #11276 |
| Retried volume snapshot backups on transient instance-manager connection errors (e.g. a dial timeout from a brief pod-network disruption), instead of failing the backup outright. | #11069 |
Set | #11488 |
Stopped discarding | #11499 |
Stopped | #11359 |
Handled a | #11207 |
| Recovered log streaming when a stale non-FIFO file blocked the log pipe. | #11246 |
| Stopped sampling logs of the Pods' processes, so no log lines are silently dropped. | #11131 |
| Stopped caching Helm release Secrets in the operator, which could spike memory usage and crashloop the operator on clusters with large Helm releases installed alongside it. | #11211 |
Re-ran owned-resource finalizer cleanup after an operator restart, so a namespace deleted while the operator was down doesn't hang in Terminatingforever. | #11215 |
Fixed rejoining replicas taking a long time to complete pg_rewind when WAL prefetching (wal.maxParallel > 1) was enabled. | #11204 |
| Treated a PostgreSQL instance rejecting connections as started up in probes. | #11152 |
Stopped issuing a redundant PATCH on every reconciliation when a cluster's | #11196 |
| Stopped halting replication slot reconciliation at the first failing slot. | #11119 |
| During rollouts, compared the running configuration hash, rather than the on-disk one, avoiding unnecessary switchovers. | #11130 |
Retried VolumeSnapshot errors until the deadline, instead of giving up early. | #11132 |
Symlinked pg_wal to the WAL volume during plugin-based recovery, instead of replaying WAL onto the data volume, which could exhaust it on a large point-in-time recovery. | #11127 |
Corrected grammar in | #11065 |
| Reported the Postgres capabilities of a plugin correctly. | #11447 |
Prevented the plugin status field from flapping on Cluster reconciliation.Contributed by @sharifmshaker. | #11386 |
| Used UTC time zone for the default backup name. | #11329 |
Deleted PVCs before Pods in | #10847 |