Releases: nats-io/nats-server
Release v2.10.23-RC.4
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.3
Added
JetStream
- Support for responding to forwarded proposals (for future use, #6157)
Fixed
JetStream
- Consistent state update behavior between file store and memory store, including a fixed integer underflow (#6147)
- No longer send a state snapshot when becoming a consumer leader as it may not include all applied state (#6151)
- Do not install snapshots on shutdown from outside the monitor goroutines as it may race with upper layer state (#6153)
- The consumer
Backoff
configuration option now correctly checks theMaxDelivery
constraint (#6154) - Consumer check floor will no longer surpass the store ack floor (#6146)
- Replicated consumers will no longer update their delivered state until quorum is reached, fixing some drifts that can occur on a leader change (#6139)
Leafnodes
- A number of leafnode interest propagation issues have been fixed, making it possible to distinguish leaf subscriptions from local routed subscriptions (#6161)
Complete Changes
Release v2.10.23-RC.3
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.3 (#6135)
Improved
JetStream
- Reduced copies and number of allocations when generating headers for republished messages (#6127)
- Adjusted the spread of filestore sync timers (#6128)
- Reduced the number of allocations in Raft group send queues, improving performance (#6132)
Fixed
JetStream
- Don’t process duplicate stream assignment responses when the stream is being reassigned due to placement issues (#6121)
- Corrected use of the stream mutex when checking interest (#6122)
- Raft entries for consumers that we cannot be sure were applied during a shutdown will no longer be reported as applied (#6133)
Leafnodes
- Fixed queue distribution where a leafnode expressed interest on behalf of a gateway in complex setups (#6126)
WebSockets
- Ensure full writes are made when compression is in use (#6091)
Complete Changes
Release v2.10.23-RC.2
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.8
Dependencies
- golang.org/x/crypto v0.29.0 (#6105)
- golang.org/x/sys v0.27.0 (#6105)
- golang.org/x/time v0.8.0 (#6105)
Improved
JetStream
- Metalayer recovery at startup will now more reliably group assets for creation/update/deletion and handle pending consumers more reliably, reducing the chance of ghost consumers and misconfigured streams happening after restarts (#6066, #6069, #6088, #6092)
- Creation of filtered consumers is now considerably faster with the addition of a new multi-subject num-pending calculation (#6089, #6112)
- Consumer backoff should now be correctly respected with multiple in-flight deliveries to clients (#6104)
- Add node10 node size to stree, providing better memory utilisation for some subject spaces, particularly those that are primarily numeric or with numeric tokens (#6106)
- Some JetStream log lines have been made more consistent (#6065)
- File-backed Raft groups will now use the same sync intervals as the filestore, including when sync always is in use (#6041)
- Metalayer snapshots will now always be attempted on shutdown (#6067)
- Consumers will now detect if an ack is received past the stream last sequence and will no longer register pre-acks from a snapshot if this happens, reducing memory usage (#6109)
Fixed
JetStream
- Consumer start sequence when specifying an optional start time has been fixed (#6082)
- Raft snapshots will no longer be incorrectly removed when truncating the log back to applied (#6055)
- Raft state will no longer be deleted if creating a stream/consumer failed because the server was shutting down (#6061)
- Fixed a panic when shutting down whilst trying to set up the metagroup (#6075)
- Raft entries that we cannot be sure were applied during a shutdown will no longer be reported as applied (#6087)
- Corrected an off-by-one error in the run-length encoding of interior deletes, which could incorrectly remove an extra message (#6111)
Tests
Complete Changes
Release v2.10.23-RC.1
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.8
Added
Windows
- New
ca_certs_match
option has been added in thetls
block for searching the certificate store for only certificates matching the specified CAs (#5115) - New
cert_match_skip_invalid
option has been added in thetls
block for ignoring certificates that have expired or are not valid yet (#6042) - The
cert_match_by
option can now be set tothumbprint
, allowing an SHA1 thumbprint to be specified incert_match
(#6042, #6047)
Improved
JetStream
- Reduced the number of allocations in consumers from get-next requests and when returning some error codes (#6039)
Fixed
General
- Load balancing queue groups from leaf nodes in a cluster (#6043)
JetStream
- Invalidate the stream state when a drift between the tracking states has been detected (#6034)
- Fixed a panic in the subject tree when checking for full wildcards (#6049)
- Snapshot processing should no longer spin when there is no leader (#6050)
- Replicated stream message framing can no longer overflow with extremely long subjects, headers or reply subjects (#6052)
- Don’t replace the leader’s snapshot when shutting down, potentially causing a desync (#6053)
Windows
- Using the
LocalMachine
certificate store is now possible from a non-administrator user (#6019)
Complete Changes
Release v2.10.22
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.8
Dependencies
- golang.org/x/crypto v0.28.0 (#5971)
- golang.org/x/sys v0.26.0 (#5971)
- golang.org/x/time v0.7.0 (#5971)
- go.uber.org/automaxprocs v1.6.0 (#5944)
- github.com/klauspost/compress v1.17.11 (#6002)
Added
Config
- A warning will now be logged at startup if the JetStream store directory appears to be in a temporary folder (#5935)
Improved
General
- More efficient searching of sublists for the number of subscriptions (#5918)
JetStream
- Improve performance when checking interest and correcting ack state on interest-based or work queue streams (#5963)
- Safer default file permissions for JetStream filestore and logs (#6013)
Fixed
JetStream
- Large number of message delete tombstones will no longer result in unusually large message blocks on disk (#5973)
- The server will no longer panic when restoring corrupted subject state containing null characters (#5978)
- A data race when processing append entries has been fixed (#5970)
- Fix a stream desync across replicas that could occur after stalled or failed catch-ups (#5939)
- Consumers will no longer race with the filestore when fetching messages, fixing some cases where consumers can get stuck with workqueue streams and max messages per subject limits (#6003)
- Pull consumers will now recalculate max delivered when expiring messages, such that the redelivered status does not report incorrectly and cause a stall with a max deliver limit (#5995)
- Clustered streams should no longer desync if a catch-up fails due to a loss of leader (#5986)
- Fixed a panic that could occur when calculating asset placement in a JetStream cluster (#5996)
- Fixed a panic when shutting down a clustered stream (#6007)
- Revert earlier PR #5785 to restore consumer start sequence clipping, fixing an issue where sourcing/mirroring consumers could skip messages (#6014)
Leafnodes
- Load balancing of queue groups over leafnode connections (#5982)
Complete Changes
Release v2.10.22-RC.3
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.8
Dependencies
- github.com/klauspost/compress v1.17.11 (#6002)
Fixed
JetStream
- Consumers will no longer race with the filestore when fetching messages, fixing some cases where consumers can get stuck with workqueue streams and max messages per subject limits (#6003)
- Pull consumers will now recalculate max delivered when expiring messages, such that the redelivered status does not report incorrectly and cause a stall with a max deliver limit (#5995)
- Clustered streams should no longer desync if a catch-up fails due to a loss of leader (#5986)
- Fixed a panic that could occur when calculating asset placement in a JetStream cluster (#5996)
- Fixed a panic when shutting down a clustered stream (#6007)
Complete Changes
Release v2.10.22-RC.2
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.8
Improved
General
- More efficient searching of sublists for the number of subscriptions (#5918)
Fixed
Leafnodes
- Load balancing of queue groups over leafnode connections (#5982)
Complete Changes
Release v2.10.22-RC.1
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.7
Dependencies
- golang.org/x/crypto v0.28.0 (#5971)
- golang.org/x/sys v0.26.0 (#5971)
- golang.org/x/time v0.7.0 (#5971)
- github.com/klauspost/compress v1.17.10 (#5945)
- go.uber.org/automaxprocs v1.6.0 (#5944)
Added
Config
- A warning will now be logged at startup if the JetStream store directory appears to be in a temporary folder (#5935)
Improved
JetStream
- Improve performance when checking interest and correcting ack state on interest-based or work queue streams (#5963)
Fixed
JetStream
- Large number of message delete tombstones will no longer result in unusually large message blocks on disk (#5973)
- The server will no longer panic when restoring corrupted subject state containing null characters (#5978)
- A data race when processing append entries has been fixed (#5970)
- Fix a stream desync across replicas that could occur after stalled or failed catch-ups (#5939)
Complete Changes
Release v2.10.21
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.7
Dependencies
Added
Config
- New TLS
min_version
option for configuring the minimum supported TLS version (#5904)
Improved
JetStream
- Global JetStream API queue hard limit for protecting the system (#5900, #5923)
- Orphaned ephemeral consumer clean-up is now logged at debug level only (#5917)
Monitoring
statsz
messages are now sent every 10 seconds instead of every 30 seconds (#5925)- Include JetStream pending API request count in
statsz
messages andjsz
responses for monitoring (#5923, #5926)
Fixed
JetStream
- Fix an issue comparing the stream configuration with the updated stream assignment on stream create (#5854)
- Improvements to recovering from old or corrupted
index.db
(#5893, #5901, #5907) - Ensure that consumer replicas and placement are adjusted properly when scaling down a replicated stream (#5927)
- Fix a panic that could occur when trying to shut down while the JetStream meta group was in the process of being set up (#5934)
Monitoring
- Always update account issuer in
accountsz
(#5886)
OCSP
- Fix peer validation on the HTTPS monitoring port when OCSP is enabled (#5906)
Config
- Support multiple trusted operators using a config file (#5896)
Complete Changes
Release v2.10.21-RC.4
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.7
Improved
Monitoring
statsz
messages are now sent every 10 seconds instead of every 30 seconds (#5925)- Include JetStream pending API request count in
statsz
messages andjsz
responses for monitoring (#5923, #5926)
Fixed
JetStream
- Ensure that consumer replicas and placement are adjusted properly when scaling down a replicated stream (#5927)