Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.24.7
Dependencies
- golang.org/x/crypto v0.42.0 (#7320)
Improved
General
- Statistics for gateways, routes and leaf connections are now correctly omitted from
accstatsz
responses if empty (#7300)
JetStream
- Stream assignment check has been simplified (#7290)
- Additional guards prevent panics when loading corrupted messages from the filestore (#7299)
- The store lock is no longer held while searching for TTL expiry tasks, improving performance (#7344)
- Removing a message from the TTL state is now faster (#7344)
- The filestore no longer performs heap allocations for hash checks (#7345)
- Meta snapshot performance for a very large number of assets has been improved after a regression in v2.11.9 (#7350)
- Sequence-from-timestamp lookups, such as those using
opt_start_time
on consumers orstart_time
on message get requests, now use a binary search for improved lookup performance (#7357)
Fixed
General
- Fixed the exit code when receiving a
SIGTERM
signal immediately after startup (#7367)
JetStream
- Fixed a use-after-free bug and a buffer reclamation issue in the filestore flusher (#7295)
- Direct get requests now correctly skip over deleted messages if the starting sequence is itself deleted (#7291)
- The Raft layer now strictly enforces that non-leaders cannot send append entries (#7297)
- The filestore now correctly handles recovering filestore blocks with out-of-order sequences from disk corruption (#7303, #7304)
- The filestore now produces more useful error messages when disk corruption is detected (#7305)
- Removed messages with a per-message TTL are now removed from the TTL state immediately (#7344)
- Fixed a bug where TTL state was recovered on startup with subject delete markers enabled, that message expiry would not start as expected (#7344)
- Expiring messages from the filestore no longer leaks timers and expires at the correct time (#7344)
- Deleting a non-existent sequence on a stream no longer results in a cluster reset and leadership election (#7348)
- Subject tree intersection now correctly handles overlapping literals and partial wildcards, i.e.
stream.A
andstream.*.A
, fixing some consumer or message get filters (#7349) - A data race when checking all JetStream limits has been fixed (#7356)
- Raft will no longer trigger a reset of the clustered state due to a stream snapshot timeout (#7293)