Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.25.5 (#7604)
Dependencies
- github.com/google/go-tpm v0.9.7 (#7578)
- github.com/nats-io/nkeys v0.4.12 (#7578)
- golang.org/x/crypto v0.45.0 (#7578)
- github.com/klauspost/compress v1.18.2 (#7604)
- github.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op (#7604)
- golang.org/x/crypto v0.46.0 (#7648)
- golang.org/x/sys v0.39.0 (#7648)
Added
General
- Added WebSocket-specific ping interval configuration with
ping_internalin thewebsocketblock (#7614)
Improved
JetStream
- The scan for the last sourced message sequence when setting up a subject-filtered source is now considerably faster (#7553)
- Consumer interest checks on interest-based streams are now significantly faster when there are large gaps in interest (#7656)
MQTT
- Retained messages will now work correctly even when sourced from a different account and has a subject transform (#7636)
Fixed
General
- WebSocket connections will now correctly limit the buffer size during decompression (#7625, thanks to Pavel Kokout at Aisle Research)
JetStream
- A protocol error caused by an invalid transform of acknowledgement reply subjects when originating from a gateway connection has been fixed (#7579)
- The meta layer will now only respond to peer remove requests after quorum has been reached (#7581)
- Invalid subject filters containing non-terminating full wildcard no longer produce unexpected matches (#7585)
- A data race when creating a stream in clustered mode has been fixed (#7586)
- A panic when processing snapshots with missing nodes or assignments has been fixed (#7588)
- When purging whole message blocks, the subject tracking and scheduled messages are now updated correctly (#7593)
- The filestore will no longer unexpectedly lose writes when
AsyncFlushis enabled after a process pause (#7594) - The filestore now will process message removal on disk before updating accounting, which improves error handling (#7595, #7601)
- Raft will no longer allow peer-removing the one remaining peer (#7610)
- A data race has been fixed in the stream health check (#7619)
- Tombstones are now correctly written for recovering the sequences after compacting or purging an almost-empty stream to seq 2 (#7627)
- Combining skip sequences and compactions will no longer overwrite the block at the wrong offset, correcting a
corrupt record stateerror (#7627) - Compactions that reclaim over half of the available space now use an atomic write to avoid losing messages if killed (#7627)
- Filestore compaction should no longer result in
no idx presentcache errors (#7634) - Filestore compaction now correctly adjusts the high and low sequences for a message block, as well as cleaning up the deletion map accordingly (#7634)
- Potential stream desyncs that could happen during stream snapshotting have been fixed (#7655)
MQTT
- The maximum payload size is now correctly enforced for MQTT clients (#7555, thanks to @yixianOu)
- Fixed a panic that could occur when reloading config if the user did not have permission to access retained messages (#7596)
- Fixed account mapping for JetStream API requests when traversing non-JetStream-enabled servers (#7598)
- QoS0 messages are now mapped correctly across account imports/exports with subject mappings (#7605)
- Loading retained messages no longer fails after restarting due to last sequence checks (#7616)
- A bug which could corrupt retained messages in clustered deployments has been fixed (#7622)
- Permissions to
$MQTT.subscriptions are now handled implicitly, with the exception ofdenyACLs which still permit restriction (#7637) - A bug where QoS2 messages could not be retrieved after a server restart has been fixed (#7643)