Skip to content

Releases: nats-io/nats-server

Release v2.11.11-RC.3

07 Nov 14:34
v2.11.11-RC.3
cc4deab

Choose a tag to compare

Release v2.11.11-RC.3 Pre-release
Pre-release

Changelog

Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.

Go Version

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 /jsz endpoint (#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

v2.11.11-RC.2...v2.11.11-RC.3

Release v2.12.2-RC.2

05 Nov 15:43
v2.12.2-RC.2
4bed27e

Choose a tag to compare

Release v2.12.2-RC.2 Pre-release
Pre-release

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_timeout option for clients, routes, gateways and leafnodes which controls the behaviour on reaching the write_deadline, values can be default, retry or close (#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

v2.12.2-RC.1...v2.12.2-RC.2

Release v2.11.11-RC.2

05 Nov 15:43
v2.11.11-RC.2
77dfa37

Choose a tag to compare

Release v2.11.11-RC.2 Pre-release
Pre-release

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_deadline option in the cluster, leafnode and gateway config blocks allows configuring write deadlines on a finger-grained basis (#7405)
  • Added write_timeout option for clients, routes, gateways and leafnodes which controls the behaviour on reaching the write_deadline, values can be default, retry or close (#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

v2.11.11-RC.1...v2.11.11-RC.2

Release v2.12.2-RC.1

30 Oct 17:17
v2.12.2-RC.1
9ced0fe

Choose a tag to compare

Release v2.12.2-RC.1 Pre-release
Pre-release

Changelog

Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.

Go Version

  • 1.25.3

Dependencies

  • github.com/klauspost/compress v1.18.1 (#7474)
  • github.com/nats-io/nats.go v1.47.0 (#7474)

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/vars endpoint 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_bytes and max_msgs limits (#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

v2.12.1...v2.12.2-RC.1

Release v2.11.11-RC.1

28 Oct 18:11
v2.11.11-RC.1
16e35cf

Choose a tag to compare

Release v2.11.11-RC.1 Pre-release
Pre-release

Changelog

Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.

Go Version

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_bytes and max_msgs limits (#7455)

Monitoring

  • The jsz monitoring 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_always for 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)

Complete Changes

v2.11.10...v2.11.11-RC.1

Release v2.12.1

14 Oct 12:08
v2.12.1
fab5f99

Choose a tag to compare

Changelog

Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.

Go Version

Dependencies

  • github.com/google/go-tpm v0.9.6 (#7374)
  • github.com/nats-io/nats.go v1.46.0 (#7374)
  • 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

General

  • The NewServerFromConfig function has been added to the embedded server API for parsing an external configuration file when ConfigFile is supplied (#7364)
  • WebSocket leafnode connections can now use a HTTP proxy by specifying proxy settings in the leafnode remotes (#7242)
  • The write_deadline option in the cluster, leafnode and gateway config blocks allows configuring write deadlines on a finger-grained basis (#7405)

Improved

Monitoring

  • The jsz monitoring endpoint can now report leader counts (#7429)

JetStream

  • The store lock is no longer held while searching for TTL expiry tasks, improving performance (#7344)
  • Removing a message from the TTL state is now faster (#7344)
  • The filestore no longer performs heap allocations for hash checks (#7345)
  • The filestore now reuses pooled write cache allocations more efficiently (#7346)
  • Meta snapshot performance for a very large number of assets has been improved after a regression in v2.11.9 (#7350)
  • Sequence-from-timestamp lookups, such as those using opt_start_time on consumers or start_time on message get requests, now use a binary search for improved lookup performance (#7357)
  • Scheduled messages are now deactivated properly when followed up with another message on the same subject without a schedule (#7366)
  • Meta snapshots are no longer taken on every stream removal (#7373)
  • Filestore cache lookups can now return early for empty blocks (#7381)
  • Filestore meta files are now written using temporary staging, avoiding accidental truncation on crashes (#7388)
  • Atomic batch publish now supports deduplication with the Nats-Msg-Id header (#7391)
  • Cache-specific log lines in the filestore have been improved (#7396)
  • Log lines and errors related to offline/unsupported assets are now clearer (#7416, #7425)

Fixed

General

  • Fixed the exit code when receiving a SIGTERM signal immediately after startup (#7367)
  • The $SYS.REQ.CLAIMS.DELETE endpoint now correctly strips headers, like the $SYS.REQ.CLAIMS.UPDATE endpoint already does (#7413)
  • Log lines generated when reloading trusted proxies now report the correct keys (#7427)

JetStream

  • Batch check now uses the correct subject instead of the last subject that does the commit (#7342)
  • Removed messages with a per-message TTL are now removed from the TTL state immediately (#7344)
  • Fixed a bug where TTL state was recovered on startup with subject delete markers enabled, that message expiry would not start as expected (#7344)
  • Expiring messages from the filestore no longer leaks timers and expires at the correct time (#7344)
  • Fixed a bug where scheduled messages would not trigger correctly after recovery (#7347)
  • Deleting a non-existent sequence on a stream no longer results in a cluster reset and leadership election (#7348)
  • Subject tree intersection now correctly handles overlapping literals and partial wildcards, i.e. stream.A and stream.*.A, fixing some consumer or message get filters (#7349)
  • A data race when checking all JetStream limits has been fixed (#7356)
  • Raft will no longer trigger a reset of the clustered state due to a stream snapshot timeout (#7293)
  • Atomic batches now reject unsupported commits (#7368)
  • 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_always for writing TTL and scheduling state files (#7385)
  • The filestore will now correctly expire a cache when the wrong sequence is found (#7396)
  • 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)

Complete Changes

v2.12.0...v2.12.1

Release v2.12.1-RC.5

13 Oct 14:53
v2.12.1-RC.5
59361c9

Choose a tag to compare

Release v2.12.1-RC.5 Pre-release
Pre-release

Changelog

Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.

Go Version

  • 1.25.2

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)

Improved

JetStream

  • Log lines and errors related to offline/unsupported assets are now clearer (#7416, #7425)

Fixed

JetStream

  • The Raft layer will no longer permit truncations from unexpected catchup entries if the catchup is completed (#7424)

Complete Changes

v2.12.1-RC.4...v2.12.1-RC.5

Release v2.12.1-RC.4

10 Oct 13:24
v2.12.1-RC.4
46822ea

Choose a tag to compare

Release v2.12.1-RC.4 Pre-release
Pre-release

Changelog

Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.

Go Version

Added

General

  • The write_deadline option in the cluster, leafnode and gateway config blocks allows configuring write deadlines on a finger-grained basis (#7405)

Fixed

General

  • The $SYS.REQ.CLAIMS.DELETE endpoint now correctly strips headers, like the $SYS.REQ.CLAIMS.UPDATE endpoint already does (#7413)

JetStream

  • 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)

Complete Changes

v2.12.1-RC.3...v2.12.1-RC.4

Release v2.12.1-RC.3

06 Oct 15:49
v2.12.1-RC.3
7c143ac

Choose a tag to compare

Release v2.12.1-RC.3 Pre-release
Pre-release

Changelog

Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.

Go Version

  • 1.25.1

Improved

JetStream

  • Cache-specific log lines in the filestore have been improved (#7396)

Fixed

JetStream

  • The filestore will now correctly expire a cache when the wrong sequence is found (#7396)
  • Fixed a data race on a wait group when mirroring streams (#7395)

Complete Changes

v2.12.1-RC.2...v2.12.1-RC.3

Release v2.12.1-RC.2

03 Oct 10:36
v2.12.1-RC.2
92c199b

Choose a tag to compare

Release v2.12.1-RC.2 Pre-release
Pre-release

Changelog

Refer to the 2.12 Upgrade Guide for backwards compatibility notes with 2.11.x.

Go Version

  • 1.25.1

Dependencies

  • github.com/google/go-tpm v0.9.6 (#7374)
  • github.com/nats-io/nats.go v1.46.0 (#7374)

Added

General

  • The NewServerFromConfig function has been added to the embedded server API for parsing an external configuration file when ConfigFile is supplied (#7364)
  • WebSocket leafnode connections can now use a HTTP proxy by specifying proxy settings in the leafnode remotes (#7242, thanks to @danbailey1000)

Improved

JetStream

  • Meta snapshots are no longer taken on every stream removal (#7373)
  • Filestore cache lookups can now return early for empty blocks (#7381)
  • Filestore meta files are now written using temporary staging, avoiding accidental truncation on crashes (#7388)
  • Atomic batch publish now supports deduplication with the Nats-Msg-Id header (#7391)

Fixed

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_always for writing TTL and scheduling state files (#7385)

Complete Changes

v2.12.1-RC.1...v2.12.1-RC.2