This release prepares the experimental cluster to run behind load balancers: nodes drain on shutdown instead of dropping all of their clients at once, ntfy can listen on several addresses, and access changes reach every node. It also fixes a revoked or deleted user keeping some of their subscriptions, on every server.
Features:
- Allow several comma-separated addresses in
listen-http, so a load balancer can hold more than ~63k connections to one ntfy node - Cluster nodes drain on shutdown: an active node withdraws (stops being ready), then turns read-only and closes its subscriber connections gradually (
experimental-cluster-drain-delay,experimental-cluster-drain-duration), so its clients move to the other nodes without a reconnect storm (experimental, see draining on shutdown)
Security:
- End all of a user's subscriptions when their access to a topic is reset or the user is deleted: only the first one was ended, so the others kept receiving the topic's messages (#1845, thanks to @gigioneggiando for reporting)
- In an experimental cluster, tell the other nodes when access changes (e.g. a reservation or a revoked permission), so they reload their access cache and disconnect subscribers who lost access; the access cache reload also catches changes made elsewhere, e.g. by the
ntfy accessCLI, and now runs every 67 seconds instead of 87
Bug fixes + maintenance:
- Fix a deadlock when ending subscriptions (reserving a topic with live subscribers, revoking access, deleting a user) while debug logging or
log-level-overridesis on: the subscriptions' topic stayed locked for good - Fix a data race when
log-level-overrideschanges (e.g. on a config reload with SIGHUP) while the server logs