Skip to content

Releases: centrifugal/centrifuge

v0.30.0

08 Aug 21:13
7e66db9
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.29.4...v0.30.0

v0.29.4

06 Aug 13:37
d1a02db
Compare
Choose a tag to compare

What's Changed

  • Bump google.golang.org/protobuf from 1.30.0 to 1.31.0
  • Bump google.golang.org/grpc from 1.36.0 to 1.53.0
  • Bump github.com/redis/rueidis from v1.0.10-go1.18 to v1.0.14-go1.18
  • Use centrifuge-js v4 in examples

Full Changelog: v0.29.3...v0.29.4

v0.29.3

28 Jun 16:06
046e0de
Compare
Choose a tag to compare

What's Changed

  • Support cf_ws_frame_ping_pong url param to simplify WebSocket protocol debugging with Postman, wscat, etc. #306

Full Changelog: v0.29.2...v0.29.3

v0.29.2

15 Jun 16:09
cbb6427
Compare
Choose a tag to compare

What's Changed

  • Use http.ResponseController to set write timeout in SSE and HTTP-streaming handlers #292
  • Experimental Client's storage API for keeping user-defined objects during connection lifetime, #296
  • Up Rueidis to v1.0.8 - fixes connect to Redis Sentinel with ipv6 address
gorelease -base v0.29.1 -version v0.29.2
# github.com/centrifugal/centrifuge
## compatible changes
(*Client).AcquireStorage: added
ConnectReply.Storage: added

# summary
v0.29.2 is a valid semantic version for this release.

Full Changelog: v0.29.1...v0.29.2

v0.28.2

14 Jun 09:44
b04d34a
Compare
Choose a tag to compare
  • Up rueidis to v1.0.8 - fixes connect to Redis Sentinel with ipv6 address

Full Changelog: v0.28.1...v0.28.2

v0.29.1

15 Apr 14:08
d18de41
Compare
Choose a tag to compare
  • Add ForceRESP2 option for RedisShardConfig. If set to true forces using RESP2 protocol for communicating with Redis. By default, Redis client tries to detect supported Redis protocol automatically trying RESP3 first.
gorelease -base v0.29.0 -version v0.29.1
# github.com/centrifugal/centrifuge
## compatible changes
RedisShardConfig.ForceRESP2: added

# summary
v0.29.1 is a valid semantic version for this release.

Full Changelog: v0.29.0...v0.29.1

v0.29.0

12 Apr 17:43
94c5b86
Compare
Choose a tag to compare

This release contains several breaking changes.

  • Removing client protocol v1 and all related parts, see #275 for more details. If you are using the latest SDK versions - this should not affect you.
  • Possibility to configure history meta TTL on a per-channel level, #264. This is optional and global history TTL value may be set over Config.HistoryMetaTTL option. By default, it's 30 days.
  • One shot encode/decode for control proto #263. Note that with this change all nodes in your Centrifuge cluster should be v0.29.0 to work properly. Do not mix nodes based on Centrifuge < v0.29.0 with nodes based on Centrifuge v0.29.0.
  • Add client level ping config, remove AppLevelPing #286 by @bfwbbrj.
❯ gorelease -base v0.28.0 -version v0.29.0
# github.com/centrifugal/centrifuge
## incompatible changes
(*Disconnect).CloseText, method set of *DisconnectEvent: removed
(*Disconnect).CloseText: removed
AppLevelPing: removed
DisableProtocolVersion1: removed
Disconnect.Reconnect: removed
DisconnectEvent.Reconnect: removed
HistoryEvent.Filter: changed from HistoryFilter to HistoryFilter
HistoryFilter.Limit: removed
HistoryFilter.Reverse: removed
HistoryFilter.Since: removed
HistoryFilter: changed from HistoryFilter to HistoryFilter
HistoryOptions.Limit: removed
HistoryOptions.Reverse: removed
HistoryOptions.Since: removed
MemoryBrokerConfig.HistoryMetaTTL: removed
ProtocolVersion1: removed
RedisBrokerConfig.HistoryMetaTTL: removed
SockjsConfig.HeartbeatDelay: removed
SockjsConfig.ProtocolVersion: removed
TransportInfo.AppLevelPing, method set of Transport: removed
TransportInfo.AppLevelPing: removed
TransportInfo.PingPongConfig: added
WebsocketConfig.PingInterval: removed
WebsocketConfig.PongTimeout: removed
WebsocketConfig.ProtocolVersion: removed
WithHistory: changed from func(int, time.Duration) PublishOption to func(int, time.Duration, ...time.Duration) PublishOption
## compatible changes
(*Node).Config: added
Config.HistoryMetaTTL: added
ConnectReply.PingPongConfig: added
HistoryFilter.Filter: added
HistoryFilter.MetaTTL: added
HistoryOptions.Filter: added
HistoryOptions.MetaTTL: added
PublishOptions.HistoryMetaTTL: added
SubscribeOptions.HistoryMetaTTL: added
WithHistoryFilter: added
WithHistoryMetaTTL: added
WithSubscribeHistoryMetaTTL: added

# summary
v0.29.0 is a valid semantic version for this release.

v0.28.0

20 Jan 13:01
748bec8
Compare
Choose a tag to compare
  • Centrifuge v0.28.0 comes with an updated Redis Engine implementation based on rueian/rueidis library. Allocation efficiency and throughput of Redis Broker and PresenceManager were improved in both standalone and Cluster Redis setups. See #262 and blog post Improving Centrifugo Redis Engine throughput and allocation efficiency with Rueidis Go library for the reasoning and numbers behind.
  • Work on a better observability and possibility to protect client protocol from misusing: Centrifuge now has CommandReadHandler and CommandProcessedHandler. These handlers are only available for client protocol v2, client protocol v1 will be removed soon. While it's not removed DisableProtocolVersion1 global var may be used to disable possibility for clients to connect to server with ProtocolVersion1.
  • Client now can't send infinite number of pongs to the server, only one pong after receiving ping is allowed
  • Client now can't send any command to the server after getting error in Connect command
  • Disconnect client if it sends async message (using Send method) to the server while MessageHandler not set
  • Possibility to dramatically reduce server CPU usage in case of sending many messages towards individual connections (it may be up to 5x reduction depending on message rate). This is possible with new options of ConnectReply: WriteDelay, ReplyWithoutQueue, MaxMessagesInFrame, QueueInitialCap which allow tweaking Centrifuge message write loop. See #270 for more details.
  • Several internal optimizations in client protocol to reduce memory allocations a bit.
  • More human-readable tracing logging output (especially in Protobuf protocol case). On the other hand, tracing log level is much more expensive now. We never assumed it will be used in production – so seems an acceptable trade-off.
  • Update centrifuge-js version in all examples
gorelease -base v0.27.2 -version v0.28.0

# github.com/centrifugal/centrifuge
## incompatible changes
(*Client).Handle: removed
(*Client).HandleCommand: changed from func(*github.com/centrifugal/protocol.Command) bool to func(*github.com/centrifugal/protocol.Command, int) bool
CommandReadHandler: changed from func(*Client, CommandReadEvent) to func(*Client, CommandReadEvent) error
DefaultRedisBrokerPrefix: removed
DefaultRedisConnectTimeout: removed
DefaultRedisPresenceManagerPrefix: removed
DefaultRedisPresenceTTL: removed
DefaultRedisReadTimeout: removed
DefaultRedisWriteTimeout: removed
RedisBrokerConfig.PubSubNumWorkers: removed
RedisShardConfig.IdleTimeout: removed
RedisShardConfig.ReadTimeout: removed
RedisShardConfig.TLSSkipVerify: removed
RedisShardConfig.UseTLS: removed
RedisShardConfig.WriteTimeout: removed
## compatible changes
(*Node).OnCommandProcessed: added
CommandProcessedEvent: added
CommandProcessedHandler: added
CommandReadEvent.CommandSize: added
ConnectReply.MaxMessagesInFrame: added
ConnectReply.QueueInitialCap: added
ConnectReply.ReplyWithoutQueue: added
ConnectReply.WriteDelay: added
DisableProtocolVersion1: added
DisconnectNotAvailable: added
DisconnectPermissionDenied: added
DisconnectTooManyErrors: added
DisconnectTooManyRequests: added
HandleReadFrame: added
RedisShardConfig.ClientName: added
RedisShardConfig.IOTimeout: added
RedisShardConfig.SentinelClientName: added
RedisShardConfig.SentinelTLSConfig: added

# summary
v0.28.0 is a valid semantic version for this release.

v0.28.0-rc.3

11 Jan 17:06
40de54d
Compare
Choose a tag to compare
v0.28.0-rc.3 Pre-release
Pre-release

v0.28.0-rc.3 contains fix of decoding large client protocol messages. The bug was introduced by v0.28.0-rc.2. This could lead to client disconnections in v0.28.0-rc.2

v0.28.0-rc.2

08 Jan 18:59
363aca1
Compare
Choose a tag to compare
v0.28.0-rc.2 Pre-release
Pre-release

One more release candidate for Centrifuge v0.28.0. See changelog about v0.28.0 to find out details of upcoming release.

v0.28.0-rc.2 contains an important fix compared to v0.28.0-rc.1 which relates to new Redis Engine we introduced in v0.28.0-rc.2: slow down subscription dissolver workers while Redis PUB/SUB is unavailable. This solves a high CPU usage which may happen while Redis PUB/SUB is unavailable and last client unsubscribes from some channel.