Skip to content

Centrifugo PRO v6.9.0

Latest

Choose a tag to compare

@FZambia FZambia released this 07 Jul 06:43
0b35c13

This release comes with ⚠️ BREAKING CHANGES ⚠️

  • Everything from Centrifugo OSS v6.9.0
  • Breaking changes. Proxy http_headers is now transport-only; client-supplied allowed emulated headers must be configured via the new emulated_headers option. 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 the ent ORM to pgx and goose for 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_size option (default 16) to size the connection pool.
    • PostgreSQL connection pool metrics are now exposed for observability.
    • Migration bookkeeping tables were called cf_migrations and cf_queue_migrations.
    • The switch is transparent to configuration and data — existing PostgreSQL databases are migrated in place on startup.
  • 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 XREAD busy-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 by http_headers).