---
id: v1.15
title: Release notes for CloudNativePG 1.15
---

# Release notes for CloudNativePG 1.15

History of user-visible changes in the 1.15 minor release of CloudNativePG.

For a complete list of changes, please refer to the
[commits](https://github.com/cloudnative-pg/cloudnative-pg/commits/release-1.15)
on the release branch in GitHub.

:::warning
    This is expected to be the last release in the 1.15.X series. 
    Users are encouraged to update to a newer minor version soon.
:::

##  Version 1.15.5

**Release date:** Oct 6, 2022

Enhancements:

-  Introduce `leaseDuration` and `renewDeadline` parameters in the controller
   manager to enhance configuration of the leader election in operator
   deployments (#759)
-  Improve the mechanism that checks that the backup object store is empty
   before archiving a WAL file for the first time: a new file called
   `.check-empty-wal-archive` is placed in the `PGDATA` immediately after
   the cluster is bootstrapped and it is then removed after the first WAL
   file is successfully archived

Security:

- Explicitly set permissions of the instance manager binary that is copied in
  the `distroless/static:nonroot` container image, by using the
  `nonroot:nonroot` user (#754)

Fixes:

- Make the cluster's conditions compatible with `metav1.Conditions` struct (#720)
- Drop any active connection on a standby after it is promoted to primary (#737)
- Honor `MAPPEDMETRIC` and `DURATION` metric types conversion in the native
  Prometheus exporter  (#765)

##  Version 1.15.4

**Release date:** Sep 6, 2022

Enhancements:

- Enable configuration of low-level network TCP settings in the PgBouncer
  connection pooler implementation (#584)
- Make sure that the `cnpg.io/instanceName` and the `cnpg.io/podRole` labels
  are always present on pods and PVCs (#632 and #680)
- Propagate the `role` label of an instance to the underlying PVC (#634)

Fixes:

- Prevent multiple in-place upgrade processes of the operator from running
  simultaneously by atomically checking whether another one is in progress (#655)
- Avoid using a hardcoded file name to store the newly uploaded instance
  manager, preventing a possible race condition during online upgrades of the
  operator (#660)
- Prevent a panic from happening when invoking `GetAllAccessibleDatabases`
  (#641)

##  Version 1.15.3

**Release date:** Aug 12, 2022

Enhancements:

- Enable the configuration of the `huge_pages` option for PostgreSQL (#456)
- Enhance log during promotion and demotion, after a failover or a switchover,
  by printing the time elapsed between the request of promotion and the actual
  availability for writes (#371)
- Add the `instanceName` and `clusterName` labels on jobs, pods, and PVCs to
  improve interaction with these resources (#534)
- Add instructions on how to create PostGIS clusters (#570)

Security:

- Explicitly assign `securityContext` to the `Pooler` deployment (#485)
- Add read timeout values to the internal web servers to prevent Slowloris DDoS (#437)

Fixes:

- Use the correct delays for restarts (`stopDelay`) and for switchover
  (`switchoverDelay`), as they were erroneously swapped before. This is an
  important fix, as it might block indefinitely restarts if `switchoverDelay` is
  not set and uses the default value of 40000000 seconds (#531)
- Prevent the metrics collector from causing panic when the query returns an
  error (#396)
- Removing an unsafe debug message that was referencing an unchecked pointer,
  leading in some cases to segmentation faults regardless of the log level (#491)
- Prevent panic when fencing in case the cluster had no annotation (#512)
- Avoid updating the CRD if a TLS certificate is not changed (#501)
- Handle conflicts while injecting a certificate in the CRD (#547)
- Backup and recovery:
    - Correctly pass object store credentials in Google Cloud (#454)

Minor changes:

- Set the default operand image to PostgreSQL 15.0

##  Version 1.15.2

**Release date:** Jul 7, 2022 (patch release)

Enhancements:

- Improve logging of the instance manager during switchover and failover
- Require Barman >= 3.0.0 for future support of PostgreSQL 15 in backup
  and recovery

Changes:

- Set the default operand image to PostgreSQL 15.0

Fixes:

- Fix the initialization order inside the `WithActiveInstance` function that
  starts the CSV log pipe for the PostgreSQL server, ensuring proper logging in
  the cluster initialization phase - this is especially useful in bootstrap
  operations like recovery from a backup are failing (before this patch, such
  logs were not sent to the standard output channel and were permanently lost)
- Avoid an unnecessary switchover when a hot standby sensitive parameter is
  decreased, and the primary has already restarted
- Properly quote role names in `ALTER ROLE` statements
- Backup and recovery:
    - Fix the algorithm detecting the closest Barman backup for PITR, which was
      comparing the requested recovery timestamp with the backup start instead
      of the end
    - Fix Point in Time Recovery based on a transaction ID, a named restore
      point, or the “immediate” target by providing a new field called
      `backupID` in the `recoveryTarget` section
    - Fix encryption parameters invoking `barman-cloud-wal-archive` and
      `barman-cloud-backup` commands
    - Stop ignoring `barmanObjectStore.serverName` option when recovering from
      a backup object store using a server name that doesn’t match the current
      cluster name
- `cnpg` plug-in:
    - Make sure that the plug-in complies with the `-n` parameter when
      specified by the user
    - Fix the `status` command to sort results and remove variability in the
      output

##  Version 1.15.1

**Release date:** May 27, 2022 (patch release)

Minor changes:

- Enable configuration of the `archive_timeout` setting for PostgreSQL, which
  was previously a fixed parameter (by default set to 5 minutes)
- Introduce a new field called `backupOwnerReference` in the `scheduledBackup`
  resource to set the ownership reference on the created backup resources, with
  possible values being `none` (default), `self` (objects owned by the scheduled
  backup object), and `cluster` (owned by the Postgres cluster object)
- Introduce automated collection of `pg_stat_wal` metrics for PostgreSQL 14 or
  higher in the native Prometheus exporter
- Set the default operand image to PostgreSQL 15.0

Fixes:

- Fix fencing by killing orphaned processes related to `postgres`
- Enable the CSV log pipe inside the `WithActiveInstance` function to collect
  logs from recovery bootstrap jobs and help in the troubleshooting phase
- Prevent bootstrapping a new cluster with a non-empty backup object store,
  removing the risk of overwriting existing backups
- With the `recovery` bootstrap method, make sure that the recovery object
  store and the backup object store are different to avoid overwriting existing
  backups
- Re-queue the reconciliation loop if the RBAC for backups is not yet created
- Fix an issue with backups and the wrong specification of the cluster name
  property
- Ensures that operator pods always have the latest certificates in the case of
  a deployment of the operator in high availability, with more than one replica
- Fix the `cnpg report operator` command to correctly handle the case of a
  deployment of the operator in high availability, with more than one replica
- Properly propagate changes in the cluster’s `inheritedMetadata` set of labels
  and annotations to the related resources of the cluster without requiring a
  restart
- Fix the `cnpg` plugin to correctly parse any custom configmap and secret name
  defined in the operator deployment, instead of relying just on the default
  values
- Fix the local building of the documentation by using the `minidocks/mkdocs` image
  for `mkdocs`

## Version 1.15.0

**Release date:** 21 April 2022

Features:

- **Fencing:** Introduction of the fencing capability for a cluster or a given
  set of PostgreSQL instances through the `cnpg.io/fencedInstances`
  annotation, which, if not empty, disables switchover/failovers in the cluster;
  fenced instances are shut down and the pod is kept running (while considered
  not ready) for inspection and emergencies
- **LDAP authentication:** Allow LDAP Simple Bind and Search+Bind configuration
  options in the `pg_hba.conf` to be defined in the Postgres cluster spec
  declaratively, enabling the optional use of Kubernetes secrets for sensitive
  options such as `ldapbindpasswd`
- Introduction of the `primaryUpdateMethod` option, accepting the values of
  `switchover` (default) and `restart`, to be used in case of unsupervised
  `primaryUpdateStrategy`; this method controls what happens to the primary
  instance during the rolling update procedure
- New `report` command in the `kubectl cnp` plugin for better diagnosis and
  more effective troubleshooting of both the operator and a specific Postgres
  cluster
- Prune those `Backup` objects that are no longer in the backup object store
- Specification of target timeline and `LSN` in Point-In-Time Recovery
  bootstrap method
- Support for the `AWS_SESSION_TOKEN` authentication token in AWS S3 through
  the `sessionToken` option
- Default image name for PgBouncer in `Pooler` pods set to
  `quay.io/enterprisedb/pgbouncer:1.17.0`

Fixes:

- Base backup detection for Point-In-Time Recovery via `targetTime` correctly
  works now, as previously a target prior to the latest available backup was
  not possible (the detection algorithm was always wrong by selecting the last
  backup as a starting point)
- Improved resilience of hot standby sensitive parameters by relying on the
  values the operator collects from `pg_controldata`
- Intermediate certificates handling has been improved by properly discarding invalid entries,
  instead of throwing an invalid certificate error
- Prometheus exporter metric collection queries in the databases are now
  committed instead of rolled back (this might result in a change in the number
  of rolled back transactions that are visible from downstream dashboards,
  where applicable)

Version 1.15.0 is the first release of CloudNativePG. Previously, this software
was called EDB Cloud Native PostgreSQL (now EDB Postgres for Kubernetes). If you
are looking for information about a previous release, please refer to the
[EDB documentation](https://www.enterprisedb.com/docs/postgres_for_kubernetes/latest/).
