Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.21.4
Dependencies
- golang.org/x/crypto v0.15.0
- golang.org/x/sys v0.14.0
- golang.org/x/time v0.4.0
- github.com/nats-io/jwt/v2 v2.5.3
Improved
General
- Remove places where using
time.After
could cause GC pressure (#4756)
JetStream
- Remove unused Observer const, add unit test to check observer applies (#4727)
- Throttle writeFullState from separate goroutine (#4731)
- Reduce memory usage with lots of subjects in filestore (#4742)
- Resiliency when doing lots of conditional updates to a KV and restarting servers (#4764)
- General stability and consistency improvements for clustered streams with failure offsets during server restarts (#4777)
- Improve code comments for Raft subsystem (#4724)
- Optimize linear scan when looking by comparing the first seq in a block (#4780)
- Move filestore cleanup to separate goroutine to make non-blocking (#4782)
- Move deletion of filestore files to separate goroutine to make non-blocking (#4783)
Monitoring
- Better check for standalone mode when determining to send statsz (#4757)
MQTT
- Add "clean" flag in trace message (#4740)
WebSocket
- Check for
/leafnode
suffix path on leaf WebSocket connection (#4774)
Fixed
Accounts
- Fix panic in JWT permissions template handling (#4730)
Leafnode
- Fix subpath concatenation used for WebSocket remote connect URL (#4770) Thanks to @yoadey for the report!
JetStream
- Remove the state check in the runAs loops except for runAsLeader (#4725)
- Make sure to properly remove meta files for filestore after conversion from 2.9.x to 2.10.x (#4733)
- Make sure we check limits when scaling up a stream (#4738)
- Improve estimation on full state allocations to avoid reallocations in filestore (#4743)
- Make access to message block first and last sequence consistently use atomics (#4744)
- Fix
DiscardNew
exceed bytes calculation (#4772) Thanks to @MauriceVanVeen for the contribution! Thanks to @davidmcote for the report! - Fix data race and possible panic when compacting (#4773, #4776)
- Fix panic in
fileStore.Stop()
(#4779)
MQTT
- Rapid load-balanced (re-)CONNECT to cluster causes races (#4734)
- Potential deadlock between JS API and mqttDeliverMsgCbQoS0 (#4760)
WebSocket
- Partial writes may lead to disconnect (#4755)