gitzette / @cyberdem0n / Mar 16 – Mar 22 W12
← W11 W12 W13 →
@cyberdem0n — open-source digest March 16 – March 22, 2026
Vol. 1, No. 2 github.com/cyberdem0n
the dispatch
@cyberdem0n
eight fixes to patroni's shutdown sequence, exception handling, and thread pool lifecycle
8 commits 9 PRs 0 releases 1 repo

Eight merged PRs across patroni this week — mostly lifecycle and compatibility work, no releases.

FEATURE

the backoff patroni needed to stop over-eager failovers

*A 200ms network hiccup no longer demotes your primary.*

Patroni used to pull the failover trigger the moment a heartbeat gap appeared, even fleeting ones. @cyberdem0n's #3453 adds a primary race backoff — now a brief network stutter doesn't declare the leader dead. The delay sits in the leader race detection path, buying time before the cluster panics and promotes a replica.

FEATURE

etcd v3's Unavailable exception now lands somewhere safe

*Patroni stops going blind when the store is temporarily unreachable.*

The Unavailable exception from etcd v3 was propagating uncaught, leaving patroni without cluster state visibility during transient store outages. #3562 catches and handles it properly. Now patroni degrades gracefully when the consensus store hiccups instead of crashing blind.

FEATURE

global thread pool now shuts down last

*The shutdown sequence was demoting threads while they were still needed.*

#3569 reorders patroni's shutdown lifecycle — the global thread pool now terminates after everything else has finished. Before, other components tried to schedule work on a pool that was already dead, causing silent failures during shutdown.

FEATURE

patroni now handles threading changes in python 3.11+

*Internal threading behavior shifted; patroni adapts.*

Python 3.11+ changed how the threading module works internally, breaking some of patroni's assumptions about thread lifecycle. #3526 adds compatibility logic to handle the new behavior. Patroni users on newer Python versions no longer encounter threading-related failures.

the dispatch — Vol. 1, No. 2 March 16 – March 22, 2026
FEATURE

postgresql.parameters type-checked on load

*Config errors surface immediately instead of at runtime.*

#3568 adds validation that postgresql.parameters is a dictionary. Malformed configs that sneak past the parser now fail early with a clear error message instead of causing cryptic failures later.

FEATURE

PostgreSQL config no longer reloads during custom bootstrap

*Custom bootstrap scripts now run unmolested.*

Patroni was reloading the PostgreSQL configuration while a custom bootstrap was mid-flight, interfering with the bootstrap process. #3563 defers config reload until after bootstrap completes. Custom initialization scripts now execute without interruption.

FEATURE

CitusHandler.run() postponed until needed

*Lazy initialization reduces startup time.*

#3571 defers CitusHandler initialization until it's actually required. The change trims startup overhead for installations not using Citus.

FEATURE

unit tests no longer block on time.sleep()

*Test suite speeds up, latency gone.*

#3570 removes direct time.sleep() calls from unit tests. Tests that were burning real wall-clock time now run instantly, making the test suite faster and less flaky.

stats corner
8
commits
9
pull requests
0
releases
commits by repo
REPO COMMITS patroni 8
github stars
patroni
8,266
repo index
  • patroni
    A template for PostgreSQL High Availability with Etcd, Consul, ZooKeeper, or Kubernetes
    8 commits · 0 releases · ★ 8266
gitzette @cyberdem0n on gitzette @cyberdem0n on GitHub
share: post on X share on LinkedIn

Your GitHub week, turned into something worth reading.

Generate your dispatch →
gitzette.online  ·  2026 © AISlopMedia, Inc.