Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.6
Dependencies
- golang.org/x/crypto v0.26.0 (#5782)
- golang.org/x/sys v0.24.0 (#5782)
- golang.org/x/time v0.6.0 (#5751)
Improved
General
- Reduced allocations in various code paths that check for subscription interest (#5736, #5744)
- Subscription matching for gateways and reply tracking has been optimized (#5735)
- Client outbound queues now limit the number of flushed vectors to ensure that very large outbound buffers don’t unfairly compete with write deadlines (#5750)
- In client and leafnode results cache, populate new entry after pruning (#5760)
- Use newly-available generic sorting functions (#5757)
- Set a HTTP read timeout on profiling, monitoring and OCSP HTTP servers (#5790)
- Improve behavior of rate-limited warning logs (#5793)
- Use dedicated queues for the handling of
statsz
andprofilez
system events (#5816)
Clustering
- Reduce the chances of implicit routes being duplicated (#5602)
JetStream
- Optimize LoadNextMsg for wildcard consumers that are consuming over a large subject space (#5710)
- When
sync
/sync_interval
is set toalways
, metadata files for streams and consumers are now written usingO_SYNC
to guarantee flushes to disk (#5729) - Walking an entire subject tree is now faster and allocates less (#5734)
- Try to snapshot stream state when a change in the clustered last failed sequence is detected (#5812)
- Message blocks are no longer loaded into memory unnecessarily when checking if we can skip ahead when loading the next message (#5819)
- Don’t attempt to re-compact blocks that cannot be compacted, reducing unnecessary CPU usage and disk I/Os (#5831)
Monitoring
- Add StreamLeaderOnly filter option to return replica results only for groups for which that node is the leader (#5704)
- The
profilez
API endpoint in the system account can now acquire and return CPU profiles (#5743)
Miscellaneous
Fixed
General
- Fixed a panic when looking up the account for a client (#5713)
- The
ClientURL()
function now returns correctly formatted IPv6 host literals (#5725) - Fixed incorrect import cycle warnings when subject mapping is in use (#5755)
- A race condition that could cause slow consumers to leave behind subscription interest after the connection has been closed has been fixed (#5754)
- Corrected an off-by-one condition when growing to or shrinking from node48 in the subject tree (#5826)
JetStream
- Retention issue that could cause messages to be incorrectly removed on a WorkQueuePolicy stream when consumers did not cover the entire subject space (#5697)
- Fixed a panic when calling the
raftz
endpoint during shutdown (#5672) - Don’t delete NRG group persistent state on disk when failing to create subscriptions (#5687)
- Fixed behavior when checking for the first block that matches a consumer subject filter (#5709)
- Reduce the number of compactions made on filestore blocks due to deleted message tombstones (#5719)
- Fixed
maximum messages per subject exceeded
unexpected error on streams using a max messages per subject limit of 1 and discard new retention policy (#5761) - Fixed bad meta state on restart that could cause deletion of assets (#5767)
- Fixed R1 streams exceeding quota limits (#5771)
- Return the correct sequence for a duplicated message on an interest policy stream when there is no interest (#5818)
- Fixed setting the consumer start sequence when that sequence does not yet appear in the stream (#5785)
- Connection type in scoped signing keys are now honored correctly (#5789)
- Expected last sequence per subject logic has now been harmonized across clustered stream leaders and followers, fixing a potential drift (#5794)
- Stream snapshots are now always installed correctly on graceful shutdown (#5809)
- A data race between consumer and stream updates has been resolved (#5820)
- Avoid increasing the cluster last failed sequence when the message was likely deleted (#5821)
Leafnodes
- Leafnode connections will now be rejected when the cluster name contains spaces (#5732)