diff --git a/LICENSE b/LICENSE index 39edb68c..d12c994c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2024 Compose, Zalando SE, Patroni Contributors +Copyright (c) 2025 Compose, Zalando SE, Patroni Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/docs/conf.py b/docs/conf.py index a4614c45..3a2205a0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -77,7 +77,7 @@ master_doc = 'index' # General information about the project. project = 'Patroni' -copyright = '2024 Compose, Zalando SE, Patroni Contributors' +copyright = '2025 Compose, Zalando SE, Patroni Contributors' author = 'Patroni Contributors' # The version info for the project you're documenting, acts as replacement for diff --git a/docs/releases.rst b/docs/releases.rst index b04cfd69..630f6c86 100644 --- a/docs/releases.rst +++ b/docs/releases.rst @@ -3,6 +3,74 @@ Release notes ============= +Version 4.0.5 +------------- + +Released 2025-02-20 + +**Stability improvements** + +- Compatibility with ``python-json-logger>=3.1`` (Alexander Kukushkin) + + Get rid of the warnings produced by the old API usage. + +- Compatibility with Python 3.13 (Alexander Kukushkin) + + Run tests against Python 3.13. + +- Compatibility with ``pyinstaller>=4.4`` (Joe Jensen) + + Fall back to the default ``iter_modules`` if ``pyinstaller`` ``toc`` attribute is not present. + +- Fix issues with PostgreSQL 9.5 support (Alexander Kukushkin) + + - Properly handle ``pg_rewind`` output format. + - Consider ``synchronous_standby_names`` format not supporting "num" specification. + +- Compatibility with the latest changes in ``urlparse`` (Alexander Kukushkin) + + ``urlparse`` doesn't accept multiple hosts with ``[]`` character in URL anymore. To mitigate the problem, switch to the native wrappers of ``PQconninfoParse()`` from ``libpq``, when it is possible, and use our implementation only for older ``psycopg2`` versions that are linked with an outdated version of ``libpq``. + + +**Bugfixes** + +- Show only the members to be restarted upon restart confirmation (András Váczi) + + Previously, when doing ``patronictl restart --pending``, the confirmation listed all members, regardless of whether their restart is pending. + +- Cancel long-running jobs on Patroni stop and remove data directory on replica bootstrap failure (Alexander Kukushkin) + + Previously, Patroni could be doing replica bootstrap, while ``pg_basebackup`` / ``wal-g`` / ``pgBackRest`` / ``barman`` or similar keep running. + +- Properly handle cluster names with a slash in ``patronictl edit-config`` (Antoni Mur) + + Replace a forward slash in ``cluster_name`` with an underscore. + +- Avoid dropping physical slots too early (Alexander Kukushkin) + + Postpone removal of physical replication slots containing ``xmin`` after a failover: on the new primary -- until this member is promoted, on replicas -- until there is a leader in the cluster. + +- Handle all exceptions raised by subprocess in ``controldata()`` (Alexander Kukushkin) + + Patroni was not properly handling all exceptions possibly raised when calling ``pg_controldata`` utility. + +- Fix bug with a slot for a former leader not retained on failover (Alexander Kukushkin) + + Avoid falsely relying on members being present in DCS, while on failover ``/member`` key for the former leader is expiring exactly at the same time. + +- Fix a couple of bugs in the quorum state machine (Alexander Kukushkin) + + - When evaluating whether there are healthy nodes for a leader race, before demoting we need to take into account quorum requirements. Without it, the former leader may end up in recovery surrounded by asynchronous nodes. + - ``QuorumStateResolver`` wasn't correctly handling the case when a replica node quickly joined and disconnected. + + +**Improvements** + +- Improve error on am empty or non-dictionary configuration file (Julian) + + Throw a more explicit exception when validating if Patroni configuration file contains a valid ``Mapping`` object. + + Version 4.0.4 ------------- diff --git a/patroni/version.py b/patroni/version.py index 26b4b667..acbd8f18 100644 --- a/patroni/version.py +++ b/patroni/version.py @@ -2,4 +2,4 @@ :var __version__: the current Patroni version. """ -__version__ = '4.0.4' +__version__ = '4.0.5'