|
3 | 3 | Release notes |
4 | 4 | ============= |
5 | 5 |
|
| 6 | +Version 4.0.6 |
| 7 | +------------- |
| 8 | + |
| 9 | +Released 2025-06-06 |
| 10 | + |
| 11 | +**Bugfixes** |
| 12 | + |
| 13 | +- Fix bug in failover from a leader with a higher priority (Alexander Kukushkin) |
| 14 | + |
| 15 | + Make sure Patroni ignores the former leader with higher priority when it reports the same ``LSN`` as the current node. |
| 16 | + |
| 17 | +- Fix permissions for the ``postgresql.conf`` file created outside of ``PGDATA`` (Michael Banck) |
| 18 | + |
| 19 | + Respect the system-wide umask value when creating the ``postgresql.conf`` file outside of the ``PGDATA`` directory. |
| 20 | + |
| 21 | +- Fix bug with switchover in ``synchronous_mode=quorum`` (Alexander Kukushkin) |
| 22 | + |
| 23 | + Do not check quorum requirements when a candidate is specified. |
| 24 | + |
| 25 | +- Ignore stale Etcd nodes by comparing cluster term (Alexander Kukushkin) |
| 26 | + |
| 27 | + Memorize the last known "raft_term" of the Etcd cluster, and when executing client requests, compare it with the "raft_term" reported by an Etcd node. |
| 28 | + |
| 29 | +- Update PostgreSQL configuration files on ``SIGHUP`` (Alexander Kukushkin) |
| 30 | + |
| 31 | + Previously, Patroni was only replacing PostgreSQL configuration files if a change in global or local configuration was detected. |
| 32 | + |
| 33 | +- Properly handle ``Unavailable`` exception raised by ``etcd3`` (Alexander Kukushkin) |
| 34 | + |
| 35 | + Patroni used to retry such requests on the same ``etcd3`` node, while switching to another node is a better strategy. |
| 36 | + |
| 37 | +- Improve ``etcd3`` lease handling (Alexander Kukushkin) |
| 38 | + |
| 39 | + Make sure Patroni refreshes the ``etcd3`` lease at least once per HA loop. |
| 40 | + |
| 41 | +- Recheck annotations on 409 status code when attempting to acquire leader lock (Alexander Kukushkin) |
| 42 | + |
| 43 | + Implement the same behavior as was done for the leader object read in Patroni version 4.0.3. |
| 44 | + |
| 45 | +- Consider ``replay_lsn`` when advancing slots (Polina Bungina) |
| 46 | + |
| 47 | + Do not try to advance slots on replicas past the ``replay_lsn``. Additionally, advance the slot to the ``replay_lsn`` position if it is already past the ``confirmed_flush_lsn`` of this slot on the replica but the replica has still not replayed the actual ``LSN`` at which this slot is on the primary. |
| 48 | + |
| 49 | +- Make sure ``CHECKPOINT`` is executed after promote (Alexander Kukushkin) |
| 50 | + |
| 51 | + It was possible that checkpoint task wasn't reset on demote because ``CHECKPOINT`` wasn't yet finished. This resulted in using a stale ``result`` when the next promote is triggered. |
| 52 | + |
| 53 | +- Avoid running "offline" demotion concurrently (Alexander Kukushkin) |
| 54 | + |
| 55 | + In case of a slow shutdown, it might happen that the next heartbeat loop hits the DCS error handling method again, resulting in ``AsyncExecutor is busy, demoting from the main thread`` warning and starting offline demotion again. |
| 56 | + |
| 57 | +- Normalize the ``data_dir`` value before renaming the data directory on initialization failure (Waynerv) |
| 58 | + |
| 59 | + Prevent a trailing slash in the ``data_dir`` parameter value from breaking the renaming process after an initialization failure. |
| 60 | + |
| 61 | +- Check that ``synchronous_standby_names`` contains the expected value (Alexander Kukushkin) |
| 62 | + |
| 63 | + Previously, the mechanism implementing the state machine for non-quorum synchronous replication didn't check the actual value of ``synchronous_standby_names``, what resulted in a stale value of ``synchronous_standby_names`` being used when ``pg_stat_replication`` is a subset of ``synchronous_standby_names``. |
| 64 | + |
| 65 | + |
6 | 66 | Version 4.0.5 |
7 | 67 | ------------- |
8 | 68 |
|
|
0 commit comments