This release comes with ⚠️ BREAKING CHANGES ⚠️
- Everything from Centrifugo OSS v6.9.0
- Breaking changes. Proxy
http_headersis now transport-only; client-supplied allowed emulated headers must be configured via the newemulated_headersoption. This is a security-motivated breaking change inherited from Centrifugo OSS, and it applies to Centrifugo PRO in the same way since PRO shares the proxy configuration. See the full rationale, migration steps, and security background in the Centrifugo OSS v6.9.0 release notes.
Improvements
- PostgreSQL storage rewritten on
pgx. The PostgreSQL communication layer (push device/token storage, push queue, and snapshot persistence) was migrated off theentORM topgxandgoosefor schema migrations. This delivers up to ~6x faster queries on hot paths such as push device iteration. As part of this work:- New
database.postgresql.pool_max_sizeoption (default16) to size the connection pool. - PostgreSQL connection pool metrics are now exposed for observability.
- Migration bookkeeping tables were called
cf_migrationsandcf_queue_migrations. - The switch is transparent to configuration and data — existing PostgreSQL databases are migrated in place on startup.
- New
- Extended connections snapshot functionality – gather anonymous connections, gather all connections (no filter).
Fixes
Push (FCM, APNs, HMS, WebPush, push queue):
- APNs: fix silent loss of pushes on transport errors and 4xx responses.
- FCM/HMS: fix cross-wired recipient fields in the FCM and HMS senders.
- HMS: fix a data race on the shared OAuth token.
- HMS: bound provider HTTP calls with the request context and a timeout.
- HMS: record partial-success rejected tokens as failed rather than sent.
- WebPush: avoid a doubled
mailto:in the VAPID subject. - Escape templated meta/localization values so push payloads stay valid JSON.
- Fix delayed-push loss under client-side Redis sharding.
- Fix a Postgres push-queue pool-exhaustion deadlock.
Connections snapshots & distributed survey:
- Fix premature completion and double-counting of distributed snapshots.
- Fix dropped headers/metadata in the snapshot connections response.
Presence events:
- Fix presence event delivery on multi-shard Redis and add read backoff.
- Fix a presence
XREADbusy-loop when filtering by event types.
Proxy:
- Fast HTTP proxy header handling now matches the regular HTTP proxy exactly: static headers can be overridden by allow-listed dynamic headers, and for connections over gRPC transports metadata is forwarded according to
grpc_metadata(previously the fast path let static headers always win and filtered metadata byhttp_headers).