Releases: nats-io/nats-server
Release v2.10.26-RC.3
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.6
Dependencies
- github.com/nats-io/nkeys v0.4.10 (#6494)
Added
General
- New server option
no_fast_producer_stall
allows disabling the stall gates, instead preferring to drop messages to consumers that would have resulted in a stall instead (#6500)
Improved
JetStream
- Consumer signalling from streams has been optimised, taking consumer filters into account, significantly reducing CPU usage and overheads when there are a large number of consumers with sparse or non-overlapping interest (#6499)
Fixed
JetStream
- Auth callouts can now correctly authenticate the username and password or authorization token from a leafnode connection (#6492)
- Stream ingest from an imported subject will now continue to work correctly after an update to imports/exports via a JWT update (#6498)
- Parallel stream creation requests for the same stream will no longer incorrectly return a limits error when max streams is configured (#6502)
Complete Changes
Release v2.10.26-RC.2
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.6
Dependencies
- github.com/nats-io/nats.go v1.39.0 (#6464)
- golang.org/x/crypto v0.33.0 (#6487)
- golang.org/x/sys v0.30.0 (#6487)
- golang.org/x/time v0.10.0 (#6487)
Improved
General
- The configured write deadline is now applied to only the current batch of write vectors (with a maximum of 64MB), making it easier to configure and reason about (#6471)
JetStream
- Messages used for cluster replication are now correctly accounted for in the statistics of the origin account (#6474)
Fixed
JetStream
- A bug which could result in stuck consumers after a leader change has been fixed (#6469)
- Fixed an issue where it was not possible to update a stream or consumer if up against the max streams or max consumers limit (#6477)
- The preferred stream leader will no longer respond if it has not completed setting up the Raft node yet, fixing some API timeouts on stream info and other API calls shortly after the stream is created (#6480)
Tests
- Unit tests have been improved (#6472)
Complete Changes
Release v2.10.26-RC.1
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.6 (#6452)
Improved
JetStream
- Improved the error message when trying to change the consumer type (#6408)
- Improved the error messages returned by
healthz
to be more descriptive about why the healthcheck failed (#6416) - Removed unnecessary locking around finding out if Raft groups are leaderless, reducing contention (#6438)
- Optimisations for calculating num pending etc by handling literal subjects using a faster path (#6446)
- Optimisations for loading the next message with multiple filters by avoiding linear scans in message blocks in some cases, particularly where there are lots of deletes or a small number of subjects (#6448)
- The limit of concurrent disk I/O operations that JetStream can perform simultaneously has been raised (#6449)
- Avoid unnecessary system time calls when ranging a large number of interior deletes, reducing CPU time (#6450)
- Reduced the number of allocations needed for handling client info headers around the JetStream API and service imports/exports (#6453)
- Num pending with multiple filters, enforcing per-subject limits and loading the per-subject info now use a faster subject tree lookup with fewer allocations (#6458)
- Calculating the starting sequence for a source consumer has been optimised for streams where there are many interior deletes (#6461)
Fixed
JetStream
- A data race between the stream config and looking up streams has been fixed (#6424) Thanks to @evankanderson!
- Fixed an issue where Raft proposals were incorrectly dropped after a peer remove operation, which could result in a stream desync (#6456)
- Stream disk reservations will no longer be counted multiple times after stream reset errors have occurred (#6457)
- Fixed an issue where a stream could desync if the server exited during a catchup (#6459)
- Fixed a deadlock that could occur when cleaning up large numbers of consumers that have reached their inactivity threshold (#6460)
WebSockets
- Fixed a couple cases where memory may not be reclaimed from Flate compressors correctly after a WebSocket client disconnect or error scenario (#6451)
Tests
Complete Changes
Release v2.10.25
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.5 (#6379)
Dependencies
- golang.org/x/sys v0.29.0 (#6323)
- golang.org/x/time v0.9.0 (#6324)
- golang.org/x/crypto v0.32.0 (#6367)
Improved
JetStream
- Raft groups will no longer snapshot too often in some situations, improving performance (#6277)
- Optimistically perform stream and consumer snapshots on a normal shutdown (#6279)
- The stream snapshot interval has been removed, now relying on the compaction minimum, which improves performance (#6289)
- Raft groups will no longer report current while they are paused with pending commits (#6317)
- Unnecessary client info fields have been removed from stream and consumer assignment proposals, API advisories and stream snapshot/restore advisories (#6326, #6338)
- Reduced lock contention between the JetStream lock and Raft group locks (#6335)
- Advisories will only be encoded and sent when there is interest, reducing CPU usage (#6341)
- Consumers with inactivity thresholds will now start less clean-up goroutines, which can reduce load on the goroutine scheduler (#6344)
- Consumer cleanup goroutines will now stop faster when the server shuts down (#6351)
Fixed
JetStream
- Subject state consistency with some message removal patterns (#6226)
- A performance issue has been fixed when updating the per-subject state (#6235)
- Fixed consistency issues with detecting partial writes in the filestore (#6283)
- A race condition between removing peers and updating replica counts has been fixed (#6316)
- Pre-acks for a sequence are now removed when the message is removed, correcting a potential memory leak (#6325)
- Metalayer snapshot errors are now surfaced correctly (#6361)
- Healthchecks no longer re-evaluate stream and consumer assignments, avoiding some streams and consumers being unexpectedly recreated shortly after a deletion (#6362)
- Clients should no longer timeout on a retried ack with the
AckAll
policy after a server restart (#6392) - Replicated consumers should no longer get stuck after leader changes due to incorrect accounting (#6387)
- Consumers will now correctly handle the case where messages queued for delivery have been removed, fixing a delivery slowdown (#6387, #6399)
- The API in-flight metric has been fixed so that it does not drift after the queue has been dropped (#6373)
- Handles for temporary files are now closed correctly if compression errors occur (#6390) — Thanks to @deem0n for the contribution!
- JetStream will now shut down correctly when detecting that the store directory underlying filesystem has become read-only (#6292) — Thanks to @souravagrawal for the contribution!
Leafnodes
- Fixed an interest propagation issue that could occur when the hub has a user with subscribe permissions on a literal subject (#6291)
- Fixed a bug where all queue interest across leafnodes could be dropped over gateways in a supercluster deployment after a leafnode connection drops (#6377)
Tests
- A number of unit tests have been improved (#6150, #6278, #6297, #6300, #6343, #6329, #6330, #6331, #6331, #6334, #6364)
Complete Changes
Release v2.10.25-RC.3
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.5 (#6379)
Fixed
JetStream
- Clients should no longer timeout on a retried ack with the
AckAll
policy after a server restart (#6392) - Replicated consumers should no longer get stuck after leader changes due to incorrect accounting (#6387)
- Consumers will now correctly handle the case where messages queued for delivery have been removed, fixing a delivery slowdown (#6387)
- The API in-flight metric has been fixed so that it does not drift after the queue has been dropped (#6373)
- Handles for temporary files are now closed correctly if compression errors occur (#6390) — Thanks to @deem0n for the contribution!
- JetStream will now shut down correctly when detecting that the store directory underlying filesystem has become read-only (#6292) — Thanks to @souravagrawal for the contribution!
Leafnodes
- Fixed a bug where all queue interest across leafnodes could be dropped over gateways in a supercluster deployment after a leafnode connection drops (#6377)
Complete Changes
Release v2.10.25-RC.2
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.4
Dependencies
- golang.org/x/crypto v0.32.0 (#6367)
Fixed
JetStream
- Metalayer snapshot errors are now surfaced correctly (#6361)
- Healthchecks no longer re-evaluate stream and consumer assignments, avoiding some streams and consumers being unexpectedly recreated shortly after a deletion (#6362)
Tests
- A number of unit tests have been improved (#6364)
Complete Changes
Release v2.10.25-RC.1
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.4
Dependencies
Improved
JetStream
- Raft groups will no longer snapshot too often in some situations, improving performance (#6277)
- Optimistically perform stream and consumer snapshots on a normal shutdown (#6279)
- The stream snapshot interval has been removed, now relying on the compaction minimum, which improves performance (#6289)
- Raft groups will no longer report current while they are paused with pending commits (#6317)
- Unnecessary client info fields have been removed from stream and consumer assignment proposals, API advisories and stream snapshot/restore advisories (#6326, #6338)
- Reduced lock contention between the JetStream lock and Raft group locks (#6335)
- Advisories will only be encoded and sent when there is interest, reducing CPU usage (#6341)
- Consumers with inactivity thresholds will now start less clean-up goroutines, which can reduce load on the goroutine scheduler (#6344)
- Consumer cleanup goroutines will now stop faster when the server shuts down (#3651)
Fixed
JetStream
- Subject state consistency with some message removal patterns (#6226)
- A performance issue has been fixed when updating the per-subject state (#6235)
- Fixed consistency issues with detecting partial writes in the filestore (#6283)
- A race condition between removing peers and updating replica counts has been fixed (#6316)
- Pre-acks for a sequence are now removed when the message is removed, correcting a potential memory leak (#6325)
Leafnodes
- Fixed an interest propagation issue that could occur when the hub has a user with subscribe permissions on a literal subject (#6291)
Tests
- A number of unit tests have been improved (#6150, #6278, #6297, #6300, #6343, #6329, #6330, #6331, #6331, #6334)
Complete Changes
Release v2.10.24
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
CVEs
- Vulnerability check warnings for CVE-2024-45337 are addressed by the dependency update to
x/crypto
, although the NATS Server does not use the affected functionality and is therefore not vulnerable
Go Version
- 1.23.4
Dependencies
- golang.org/x/crypto v0.31.0 (#6246)
- github.com/nats-io/jwt/v2 v2.7.3 (#6256)
- github.com/nats-io/nkeys v0.4.9 (#6255)
Fixed
General
- Request/reply tracking with
allow_responses
permission is now pruned more regularly, fixing performance issues that can get worse over time (#6064)
JetStream
- Revert a change introduced in 2.10.23 that could potentially cause a consumer info call to fail if it takes place immediately after the consumer was created in some large or heavily-loaded clustered setups (#6250)
- Minor fixes to subject state tracking (#6244)
- Minor fixes to
healthz
and healthchecks (#6247, #6248, #6232) - A calculation used to determine if exceeding limits has been corrected (#6264)
- Raft groups will no longer spin when truncating the log fails, i.e. during shutdown (#6271)
WebSockets
- A WebSocket close frame will no longer incorrectly include a status code when not needed (#6260)
Complete Changes
Release v2.10.24-RC.3
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.4
Fixed
JetStream
- A calculation used to determine if exceeding limits has been corrected (#6264)
WebSockets
- A WebSocket close frame will no longer incorrectly include a status code when not needed (#6260)
Complete Changes
Release v2.10.24-RC.2
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.23.4