Releases: nats-io/nats-server
Release v2.12.2
Changelog
Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.
Go Version
- 1.25.4 (#7520)
Dependencies
- github.com/klauspost/compress v1.18.1 (#7474)
- github.com/nats-io/nats.go v1.47.0 (#7474)
- golang.org/x/sys v0.38.0 (#7538)
- github.com/minio/highwayhash 070ab1a (#7539)
Added
General
- Support for the PROXY protocol (v1 and v2) for client connections, when
proxy_protocol: trueis set in the config (#7456)
JetStream
- Added
meta_compactandmeta_compact_size, advanced JetStream config options to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7484, #7521) - Added
write_timeoutoption for clients, routes, gateways and leafnodes which controls the behaviour on reaching thewrite_deadline, values can bedefault,retryorclose(#7513)
Monitoring
- Added expvar
/debug/varsendpoint to the monitoring port (#7469) - Meta cluster snapshot statistics have been added to the
/jszendpoint (#7524) - The
/jszendpoint can now show direct consumers with thedirect-consumers?trueflag (#7543)
Improved
General
- Binary stream snapshots are now preferred by default for nodes on new route connections (#7479)
- Reduced allocations in the sublist and subject transforms (#7519)
JetStream
- Improved the logging for observer mode (#7433)
- Improve interest detection when consumers are created or deleted across different servers (#7440)
- Improved the performance of enforcing
max_bytesandmax_msgslimits (#7455) - Streams and consumers will no longer unnecessarily snapshot when being removed or scaling down (#7495)
- Streams are now loaded in parallel when enabling JetStream, often reducing the time it takes to start up the server (#7482, #7526)
- Log lines and errors related to offline/unsupported assets are now clearer (#7416, #7425)
- Stream catchups will now use delete ranges more aggressively, speeding up catchups of large streams with many interior deletes (#7512)
- Streams with subject transforms can now implicitly republish based on those transforms by configuring
>for both republish source and destination (#7515) - A race condition where subscriptions may not be set up before catchup requests are sent after a leader change has been fixed (#7518)
- Reduced heap allocations in hash checks (#7539)
- Healthchecks now correctly report when streams are catching up, instead of showing them as unhealthy (#7535)
- Potentially reduced the number of calls to the account resolver for assets that are not resident on that server (#7537)
Fixed
General
- When using message tracing, header corruption when setting the hop header has been fixed (#7443)
- Fixed a bug when validating leafnode proxies (#7444)
- Fixed a regression where token authentication would not be parsed correctly in leafnode URLs (#7452)
- Gateway subscribe/unsubscribe will no longer block on account fetches (#7449)
- Shutting down a server using lame-duck mode should no longer result in max connection exceeded errors (#7527)
JetStream
- Caches will now no longer expire unnecessarily when re-reading the same sequences multiple times in first-matching code paths (#7435)
- Fixed a bug in atomic batching where the incorrect field would be checked when looking for unsupported headers (#7436)
- Fixed a deadlock that could happen when interleaving a direct get request with a batch write (#7458)
- A couple of issues related to header handling have been fixed (#7465)
- No-wait requests now return a 400 No Messages response correctly if the stream is empty (#7466)
- Raft groups will now only report leadership status after a no-op entry on recovery (#7460)
- Fixed a race condition in the filestore that could happen between storing messages and shutting down (#7496)
- A panic that could occur when recovering streams in parallel has been fixed (#7503)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7508)
- Indexing a message block in the filestore no longer tries to adjust the cache first sequence (#7508)
- Writing skip message records in the filestore no longer releases and reacquires the lock unnecessarily (#7508)
- Writing message records only overwrites the cache first sequence on the first indexed write (#7508)
- Fixed a bug on metalayer recovery where stream and consumer monitor goroutines for recreated assets would run with the wrong Raft group (#7510)
- Scaling up an asset from R1 now results in an installed snapshot, allowing recovery after restart if interrupted, avoiding a potential desync (#7509)
- Raft groups should no longer report no quorum incorrectly when shutting down (#7522)
- Consumers that existed in a metalayer snapshot but were deleted on recovery will no longer result in failing healthchecks (#7523)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7525)
- Fixed a race condition that could happen with shutdown signals when shutting down JetStream (#7536)
- Fixed an issue in the filestore where skipping message sequences did not correctly update the cache accounting (#7534)
- Fixed a deadlock that could occur when purging a stream with mismatched consumer state (#7546)
Complete Changes
Release v2.11.11
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.25.4 (#7520)
Dependencies
- golang.org/x/crypto v0.43.0 (#7423)
- golang.org/x/sys v0.37.0 (#7423)
- golang.org/x/time v0.14.0 (#7423)
- golang.org/x/sys v0.38.0 (#7538)
- github.com/minio/highwayhash 070ab1a (#7539)
Added
JetStream
- Added
meta_compactandmeta_compact_size, advanced JetStream config options to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7484, #7521) - Added
write_timeoutoption for clients, routes, gateways and leafnodes which controls the behaviour on reaching thewrite_deadline, values can bedefault,retryorclose(#7513)
Monitoring
- Meta cluster snapshot statistics have been added to the
/jszendpoint (#7524) - The
/jszendpoint can now show direct consumers with thedirect-consumers?trueflag (#7543)
Improved
General
- Binary stream snapshots are now preferred by default for nodes on new route connections (#7479)
- Reduced allocations in the sublist and subject transforms (#7519)
JetStream
- Improved the logging for observer mode (#7433)
- Improved the performance of enforcing
max_bytesandmax_msgslimits (#7455) - Streams and consumers will no longer unnecessarily snapshot when being removed or scaling down (#7495)
- Streams are now loaded in parallel when enabling JetStream, often reducing the time it takes to start up the server (#7482)
- Stream catchups will now use delete ranges more aggressively, speeding up catchups of large streams with many interior deletes (#7512)
- Streams with subject transforms can now implicitly republish based on those transforms by configuring
>for both republish source and destination (#7515) - A race condition where subscriptions may not be set up before catchup requests are sent after a leader change has been fixed (#7518)
- JetStream recovery parallelism now matches the I/O gated semaphore (#7526)
- Reduced heap allocations in hash checks (#7539)
- Healthchecks now correctly report when streams are catching up, instead of showing them as unhealthy (#7535)
- Improve interest detection when consumers are created or deleted across different servers (#7440)
Monitoring
- The
jszmonitoring endpoint can now report leader counts (#7429)
Fixed
General
- When using message tracing, header corruption when setting the hop header has been fixed (#7443)
- Shutting down a server using lame-duck mode should no longer result in max connection exceeded errors (#7527)
JetStream
- Race conditions and potential panics fixed in the handling of some JetStream API handlers (#7380)
- The filestore no longer loses tombstones when using secure erase (#7384)
- The filestore no longer loses the last sequence when recovering blocks containing only tombstones (#7384)
- The filestore now correctly cleans up empty blocks when selecting the next first block (#7384)
- The filestore now correctly obeys
sync_alwaysfor writing TTL and scheduling state files (#7385) - Fixed a data race on a wait group when mirroring streams (#7395)
- Skipped message sequences are now checked for ordering before apply, fixing a potential stream desync on catchups (#7400)
- Skipped message sequences now correctly detect gaps from erased message slots, fixing potential cache issues, slow reads and issues with catchups (#7399, #7401)
- Raft groups now report peer activity more consistently, fixing some cases where asset info and monitoring endpoints may report misleading values after leader changes (#7402)
- Raft groups will no longer permit truncations from unexpected catchup entries if the catchup is completed (#7424)
- The filestore will now correctly release locks when erasing messages returns an error (#7431)
- Caches will now no longer expire unnecessarily when re-reading the same sequences multiple times in first-matching code paths (#7435)
- A couple of issues related to header handling have been fixed (#7465)
- No-wait requests now return a 400 No Messages response correctly if the stream is empty (#7466)
- Raft groups will now only report leadership status after a no-op entry on recovery (#7460)
- Fixed a race condition in the filestore that could happen between storing messages and shutting down (#7496)
- A panic that could occur when recovering streams in parallel has been fixed (#7503)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7508)
- Writing skip message records in the filestore no longer releases and reacquires the lock unnecessarily (#7508)
- Fixed a bug on metalayer recovery where stream and consumer monitor goroutines for recreated assets would run with the wrong Raft group (#7510)
- Scaling up an asset from R1 now results in an installed snapshot, allowing recovery after restart if interrupted, avoiding a potential desync (#7509)
- Raft groups should no longer report no quorum incorrectly when shutting down (#7522)
- Consumers that existed in a metalayer snapshot but were deleted on recovery will no longer result in failing healthchecks (#7523)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7525)
- Fixed a race condition that could happen with shutdown signals when shutting down JetStream (#7536)
- Fixed a deadlock that could occur when purging a stream with mismatched consumer state (#7546)
Complete Changes
Release v2.12.2-RC.4
Changelog
Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.
Go Version
- 1.25.4
Dependencies
Added
General
- Support for the PROXY protocol (v1 and v2) for client connections, when
proxy_protocol: trueis set in the config (#7456)
Monitoring
- The
/jszendpoint can now show direct consumers with thedirect-consumers?trueflag (#7543)
Improved
JetStream
- Reduced heap allocations in hash checks (#7539)
- Healthchecks now correctly report when streams are catching up, instead of showing them as unhealthy (#7535)
- Potentially reduced the number of calls to the account resolver for assets that are not resident on that server (#7537)
Fixed
JetStream
- Fixed a race condition that could happen with shutdown signals when shutting down JetStream (#7536)
- Fixed an issue in the filestore where skipping message sequences did not correctly update the cache accounting (#7534)
Complete Changes
Release v2.11.11-RC.4
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.25.4
Dependencies
Added
Monitoring
- The
/jszendpoint can now show direct consumers with thedirect-consumers?trueflag (#7543)
Improved
JetStream
- Reduced heap allocations in hash checks (#7539)
- Healthchecks now correctly report when streams are catching up, instead of showing them as unhealthy (#7535)
- Improve interest detection when consumers are created or deleted across different servers (#7440)
Fixed
JetStream
- Fixed a race condition that could happen with shutdown signals when shutting down JetStream (#7536)
Complete Changes
https://github.com/nats-io/nats-server/compare/v2.11.11-RC.3..v2.11.11-RC.4
Release v2.12.2-RC.3
Changelog
Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.
Go Version
- 1.25.4 (#7520)
Added
JetStream
- Added
meta_compact_size, an advanced JetStream config option to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7521) - Meta cluster snapshot statistics have been added to the
/jszendpoint (#7524)
Improved
General
- Reduced allocations in the sublist and subject transforms (#7519)
JetStream
- A race condition where subscriptions may not be set up before catchup requests are sent after a leader change has been fixed (#7518)
- JetStream recovery parallelism now matches the I/O gated semaphore (#7526)
Fixed
General
- Shutting down a server using lame-duck mode should no longer result in max connection exceeded errors (#7527)
JetStream
- Raft groups should no longer report no quorum incorrectly when shutting down (#7522)
- Consumers that existed in a metalayer snapshot but were deleted on recovery will no longer result in failing healthchecks (#7523)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7525)
Complete Changes
Release v2.11.11-RC.3
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.25.4 (#7520)
Added
JetStream
- Added
meta_compact_size, an advanced JetStream config option to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7521) - Meta cluster snapshot statistics have been added to the
/jszendpoint (#7524)
Improved
General
- Reduced allocations in the sublist and subject transforms (#7519)
JetStream
- A race condition where subscriptions may not be set up before catchup requests are sent after a leader change has been fixed (#7518)
- JetStream recovery parallelism now matches the I/O gated semaphore (#7526)
Fixed
General
- Shutting down a server using lame-duck mode should no longer result in max connection exceeded errors (#7527)
JetStream
- Raft groups should no longer report no quorum incorrectly when shutting down (#7522)
- Consumers that existed in a metalayer snapshot but were deleted on recovery will no longer result in failing healthchecks (#7523)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7525)
Complete Changes
Release v2.12.2-RC.2
Changelog
Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.
Go Version
- 1.25.3
Added
General
- Added
write_timeoutoption for clients, routes, gateways and leafnodes which controls the behaviour on reaching thewrite_deadline, values can bedefault,retryorclose(#7513)
Improved
JetStream
- Stream catchups will now use delete ranges more aggressively, speeding up catchups of large streams with many interior deletes (#7512)
- Streams with subject transforms can now implicitly republish based on those transforms by configuring
>for both republish source and destination (#7515)
Fixed
JetStream
- A panic that could occur when recovering streams in parallel has been fixed (#7503)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7508)
- Indexing a message block in the filestore no longer tries to adjust the cache first sequence (#7508)
- Writing skip message records in the filestore no longer releases and reacquires the lock unnecessarily (#7508)
- Writing message records only overwrites the cache first sequence on the first indexed write (#7508)
- Fixed a bug on metalayer recovery where stream and consumer monitor goroutines for recreated assets would run with the wrong Raft group (#7510)
- Scaling up an asset from R1 now results in an installed snapshot, allowing recovery after restart if interrupted, avoiding a potential desync (#7509)
Complete Changes
Release v2.11.11-RC.2
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.25.3
Added
General
- The
write_deadlineoption in thecluster,leafnodeandgatewayconfig blocks allows configuring write deadlines on a finger-grained basis (#7405) - Added
write_timeoutoption for clients, routes, gateways and leafnodes which controls the behaviour on reaching thewrite_deadline, values can bedefault,retryorclose(#7513)
Improved
JetStream
- Log lines and errors related to offline/unsupported assets are now clearer (#7416, #7425)
- Streams and consumers will no longer unnecessarily snapshot when being removed or scaling down (#7495)
- Streams are now loaded in parallel when enabling JetStream, often reducing the time it takes to start up the server (#7482)
- Stream catchups will now use delete ranges more aggressively, speeding up catchups of large streams with many interior deletes (#7512)
- Streams with subject transforms can now implicitly republish based on those transforms by configuring
>for both republish source and destination (#7515)
Fixed
JetStream
- Fixed a race condition in the filestore that could happen between storing messages and shutting down (#7496)
- A panic that could occur when recovering streams in parallel has been fixed (#7503)
- An off-by-one when detecting holes at the end of a filestore block has been fixed (#7508)
- Writing skip message records in the filestore no longer releases and reacquires the lock unnecessarily (#7508)
- Fixed a bug on metalayer recovery where stream and consumer monitor goroutines for recreated assets would run with the wrong Raft group (#7510)
- Scaling up an asset from R1 now results in an installed snapshot, allowing recovery after restart if interrupted, avoiding a potential desync (#7509)
Complete Changes
Release v2.12.2-RC.1
Changelog
Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.
Go Version
- 1.25.3
Dependencies
Added
JetStream
- Added
meta_compact, an advanced JetStream config option to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7484)
Monitoring
- Added expvar
/debug/varsendpoint to the monitoring port (#7469)
Improved
General
- Binary stream snapshots are now preferred by default for nodes on new route connections (#7479)
JetStream
- Improved the logging for observer mode (#7433)
- Improve interest detection when consumers are created or deleted across different servers (#7440)
- Improved the performance of enforcing
max_bytesandmax_msgslimits (#7455) - Streams and consumers will no longer unnecessarily snapshot when being removed or scaling down (#7495)
- Streams are now loaded in parallel when enabling JetStream, often reducing the time it takes to start up the server (#7482)
Fixed
General
- When using message tracing, header corruption when setting the hop header has been fixed (#7443)
- Fixed a bug when validating leafnode proxies (#7444)
- Fixed a regression where token authentication would not be parsed correctly in leafnode URLs (#7452)
- Gateway subscribe/unsubscribe will no longer block on account fetches (#7449)
JetStream
- Caches will now no longer expire unnecessarily when re-reading the same sequences multiple times in first-matching code paths (#7435)
- Fixed a bug in atomic batching where the incorrect field would be checked when looking for unsupported headers (#7436)
- Fixed a deadlock that could happen when interleaving a direct get request with a batch write (#7458)
- A couple of issues related to header handling have been fixed (#7465)
- No-wait requests now return a 400 No Messages response correctly if the stream is empty (#7466)
- Raft groups will now only report leadership status after a no-op entry on recovery (#7460)
- Fixed a race condition in the filestore that could happen between storing messages and shutting down (#7496)
Complete Changes
Release v2.11.11-RC.1
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
- 1.25.3 (#7428)
Dependencies
- golang.org/x/crypto v0.43.0 (#7423)
- golang.org/x/sys v0.37.0 (#7423)
- golang.org/x/time v0.14.0 (#7423)
Added
JetStream
- Added
meta_compact, an advanced JetStream config option to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7484)
Improved
General
- Binary stream snapshots are now preferred by default for nodes on new route connections (#7479)
JetStream
- Improved the logging for observer mode (#7433)
- Improved the performance of enforcing
max_bytesandmax_msgslimits (#7455)
Monitoring
- The
jszmonitoring endpoint can now report leader counts (#7429)
Fixed
General
- When using message tracing, header corruption when setting the hop header has been fixed (#7443)
JetStream
- Race conditions and potential panics fixed in the handling of some JetStream API handlers (#7380)
- The filestore no longer loses tombstones when using secure erase (#7384)
- The filestore no longer loses the last sequence when recovering blocks containing only tombstones (#7384)
- The filestore now correctly cleans up empty blocks when selecting the next first block (#7384)
- The filestore now correctly obeys
sync_alwaysfor writing TTL and scheduling state files (#7385) - Fixed a data race on a wait group when mirroring streams (#7395)
- Skipped message sequences are now checked for ordering before apply, fixing a potential stream desync on catchups (#7400)
- Skipped message sequences now correctly detect gaps from erased message slots, fixing potential cache issues, slow reads and issues with catchups (#7399, #7401)
- Raft groups now report peer activity more consistently, fixing some cases where asset info and monitoring endpoints may report misleading values after leader changes (#7402)
- Raft groups will no longer permit truncations from unexpected catchup entries if the catchup is completed (#7424)
- The filestore will now correctly release locks when erasing messages returns an error (#7431)
- Caches will now no longer expire unnecessarily when re-reading the same sequences multiple times in first-matching code paths (#7435)
- A couple of issues related to header handling have been fixed (#7465)
- No-wait requests now return a 400 No Messages response correctly if the stream is empty (#7466)
- Raft groups will now only report leadership status after a no-op entry on recovery (#7460)