Skip to content

Releases: nats-io/nats-server

Release v2.12.5-RC.2

20 Feb 14:39
v2.12.5-RC.2
d23f414

Choose a tag to compare

Release v2.12.5-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.7

Added

JetStream

  • The stream snapshot/backup endpoint now accepts the window_size parameter, to allow improving flow control over slow or unreliable connections (#7839)

Improved

JetStream

  • Orphaned stream and consumer checks are now aligned with the metalayer snapshot logic (#7826)
  • Wildcard filtering when loading messages is now considerably faster in the memory store (#7840, #7855)
  • Metalayer snapshots now take place asynchronously when possible, such that JS API operations are not blocked while the snapshot is taking place (#7827, #7846)
    • This behaviour can be disabled by setting meta_compact_sync: true in the jetstream configuration block
  • Consumers with a single subject filter no longer incorrectly use the multi-filter message lookups (#7856)

Fixed

Leafnodes

  • A crash when leafnodes with bad credentials performs an auth callout has been fixed (#7844)

JetStream

  • Recovered streams and consumers are now correctly handled when not present in a metalayer catchup snapshot (#7824)
  • Ensure that messages that have reached the max deliver state are preserved with the WorkQueue retention policy (#7845)
  • An inconsistency with consumer naming between the current and legacy consumer create endpoints has been fixed (#7848)
  • The Raft layer no longer incorrectly reverts the last snapshot applied sequence when truncating uncommitted entries after a catchup snapshot (#7849)
  • The Raft layer no longer incorrectly restores the cluster size to 1 at startup, which could result in an isolated node incorrectly winning a single-node election (#7850)

Complete Changes

v2.12.5-RC.1...v2.12.5-RC.2

Release v2.12.5-RC.1

16 Feb 17:01
v2.12.5-RC.1
6553e5b

Choose a tag to compare

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

Changelog

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

Go Version

Dependencies

  • github.com/nats-io/nkeys v0.4.15 (#7797)
  • github.com/klauspost/compress v1.18.4 (#7812)
  • golang.org/x/sys v0.41.0 (#7812)
  • github.com/antithesishq/antithesis-sdk-go v0.6.0-default-no-op (#7835)
  • golang.org/x/crypto v0.48.0 (#7835)

Improved

JetStream

  • "Catchup for stream" log lines are now more consistent (#7784)
  • Raft now only accepts forwarded proposals if caught up as the new leader, limiting potentially unbounded log growth (#7809)
  • Raft now correctly refuses concurrent membership changes if forwarded a peer removal from another node (#7809)
  • The max_consumers limit of a stream can now be updated after stream creation (#7724)
  • The pending messages and bytes are now included in consumer unpin responses (#7815)
  • Stream backups/snapshots are now streamed to clients with improved flow control, which should improve throughput and robustness, particularly over unreliable links, reducing the chance of backups failing due to flow control errors (#7828)

Fixed

JetStream

  • A filestore bug which could hold onto a lock when exiting after an error has been fixed (#7780)
  • The filestore now always uses tombstones for recovering trailing deletes (#7782)
  • Fixed a race condition when rebuilding block state during recovery (#7783)
  • The filestore binary search for a message block now correctly sorts blocks that contain only tombstones (#7787)
  • Fixed a data race in the filestore when acquiring the deduplication sequence (#7789)
  • Raft now correctly checks the closed state when reporting if the node is current (#7793)
  • Raft now sets the election timeout instead of the campaign timeout when leaving observer mode (#7793)
  • The metalayer now tracks in-flight meta changes for invalid stream or consumer updates (#7798)
  • The metalayer no longer incorrectly overwrites local consumer assignments before they are applied, which would result in them being omitted from the meta snapshot (#7798)
  • The inactive threshold clean-up no longer leave lingering goroutines (#7799)
  • Pooled publish message underlying buffer capacity is now reused correctly (#7790)
  • Consumers with overlapping filter subjects where one is not a subset of the other are now allowed (#7810)
  • The filestore now checksums after truncation on compressed or encrypted stores (#7816)
  • The filestore no longer leaks locks in various error states (#7816)
  • The filestore now correctly holds the lock during snapshotting on encrypted stores (#7816)
  • The filestore now ensures that num pending calculations cannot overflow (#7816)
  • The filestore now correctly recalculates the subject state as needed when finding last sequences (#7816)
  • The filestore now sorts configured subjects when checking whether filters represent all of the configured filters (#7816)
  • The filestore now avoids subject and header corruption in more cases (#7816)
  • Consumer unpinning is now handled correctly when stepping down (#7819)
  • Consumer unpinning now allows the next client to pick up the next pin without waiting for new messages (#7819)
  • Fixed a race condition when remapping the underlying group of a replicated asset (#7820)
  • An overflowed pull request when min pending or min ack pending is above the threshold is now handled correctly (#7795)
  • Timers are no longer leaked when failing to set up mirrors, which resulted in high CPU usage (#7825)
  • Monitor quit channels are created on demand, fixing cases where an asset restarts with a different underlying Raft group (#7837)

MQTT

  • SUB and UNSUB packets now correctly detect and reject the Packet Identifier being set to 0 (#7805)

Complete Changes

v2.12.4...v2.12.5-RC.1

Release v2.12.4

27 Jan 15:30
v2.12.4
34894c1

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.8 (#7696)
  • github.com/nats-io/nats.go v1.48.0 (#7696)
  • github.com/klauspost/compress v1.18.3 (#7736)
  • golang.org/x/crypto v0.47.0 (#7736)
  • golang.org/x/sys v0.40.0 (#7736)

Added

Monitoring

  • Added tls_cert_not_after to the varz monitoring endpoint for showing when TLS certificates are due to expire (#7709)

Improved

JetStream

  • Creating consumer file stores no longer contends on the stream lock, improving consumer create performance on heavily loaded streams (#7700)
  • Recalculating num pending with updated filter subjects no longer gathers and sorts the subject filter list twice (#7772)
  • Switching to interest-based retention will now remove no-interest messages from the head of the stream (#7766)

Fixed

General

  • The config parser now correctly detects and errors on self-referencing environment variables (#7737)
  • Internal functions for handling headers should no longer corrupt message bodies if appended (#7752)

JetStream

  • Raft single node elections now transition into leader state correctly (#7642)
  • R1 streams will no longer incorrectly drift last sequence when exceeding limits (#7658)
  • Deleted streams are no longer wrongfully revived if stalled on an upper-layer catchup (#7668)
  • A panic that could happen when receiving a shutdown signal while JetStream is still starting up has been fixed (#7683)
  • JetStream usage stats now correctly reflect purged whole blocks when optimising large purges (#7685)
  • Recovering JetStream encryption keys now happens independently of the stream index recovery, fixing some cases where the key could be reset unexpectedly if the index is rebuilt (#7678)
  • Non-replicated file-based consumers now detect corrupted state on disk and are deleted automatically (#7691)
  • A panic that could occur when a compact and a hash check run concurrently on a store has been fixed (#7697)
  • Raft no longer allows a repeat vote for the same term after a stepdown or leadership transfer (#7698)
  • Replicated consumers are no longer incorrectly deleted if they become leader just as JetStream is about to shut down (#7699)
  • Fixed an issue where a single truncated block could prevent storing new messages in the filestore (#7704)
  • Fixed a concurrent map iteration/write panic that could occur on WorkQueue streams during partitioning (#7708)
  • Fixed a deadlock that could occur on shutdown when adding streams (#7710)
  • Required API level errors are now only returned after other checks, preventing unexpected replies from other servers (#7711)
  • A data race on mirror consumers has been fixed (#7716)
  • JetStream no longer leaks subscriptions in a cluster when a stream import/export is set up that overlaps the $JS.> namespace (#7720)
  • The filestore will no longer waste CPU time rebuilding subject state for WALs (#7721)
  • Configuring cluster_traffic in config mode has been fixed (#7723)
  • Subject intersection no longer misses certain subjects with specific patterns of overlapping filters, which could affect consumers, num pending calculations etc (#7728, #7741, #7744, #7745)
  • Multi-filtered next message lookups in the filestore can now skip blocks when faster to do so (#7750)
  • The binary search for start times now handles deleted messages correctly (#7751)
  • Consumer updates will now only recalculate num pending when the filter subjects are changed (#7753)
  • Consumer info calls will no longer recalculate num pending (#7758)
  • Consumers on replicated interest or workqueue streams should no longer lose interest or cause desyncs after having their filter subjects updated (#7773)
  • Interest-based streams will no longer start more check interest state goroutines when there are existing running ones (#7769)

Complete Changes

v2.12.3...v2.12.4

Release v2.11.12

27 Jan 15:29
v2.11.12
2d97cb7

Choose a tag to compare

Changelog

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

Go Version

Dependencies

  • github.com/nats-io/nkeys v0.4.12 (#7578)
  • github.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op (#7604)
  • github.com/klauspost/compress v1.18.3 (#7736)
  • golang.org/x/crypto v0.47.0 (#7736)
  • golang.org/x/sys v0.40.0 (#7736)
  • github.com/google/go-tpm v0.9.8 (#7696)
  • github.com/nats-io/nats.go v1.48.0 (#7696)

Added

General

  • Added WebSocket-specific ping interval configuration with ping_internal in the websocket block (#7614)

Monitoring

  • Added tls_cert_not_after to the varz monitoring endpoint for showing when TLS certificates are due to expire (#7709)

Improved

JetStream

  • The scan for the last sourced message sequence when setting up a subject-filtered source is now considerably faster (#7553)
  • Consumer interest checks on interest-based streams are now significantly faster when there are large gaps in interest (#7656)
  • Creating consumer file stores no longer contends on the stream lock, improving consumer create performance on heavily loaded streams (#7700)
  • Recalculating num pending with updated filter subjects no longer gathers and sorts the subject filter list twice (#7772)
  • Switching to interest-based retention will now remove no-interest messages from the head of the stream (#7766)

MQTT

  • Retained messages will now work correctly even when sourced from a different account and has a subject transform (#7636)

Fixed

General

  • WebSocket connections will now correctly limit the buffer size during decompression (#7625, thanks to Pavel Kokout at Aisle Research)
  • The config parser now correctly detects and errors on self-referencing environment variables (#7737)
  • Internal functions for handling headers should no longer corrupt message bodies if appended (#7752)

JetStream

  • A protocol error caused by an invalid transform of acknowledgement reply subjects when originating from a gateway connection has been fixed (#7579)
  • The meta layer will now only respond to peer remove requests after quorum has been reached (#7581)
  • Invalid subject filters containing non-terminating full wildcard no longer produce unexpected matches (#7585)
  • A data race when creating a stream in clustered mode has been fixed (#7586)
  • A panic when processing snapshots with missing nodes or assignments has been fixed (#7588)
  • When purging whole message blocks, the subject tracking and scheduled messages are now updated correctly (#7593)
  • The filestore will no longer unexpectedly lose writes when AsyncFlush is enabled after a process pause (#7594)
  • The filestore now will process message removal on disk before updating accounting, which improves error handling (#7595, #7601)
  • Raft will no longer allow peer-removing the one remaining peer (#7610)
  • A data race has been fixed in the stream health check (#7619)
  • Tombstones are now correctly written for recovering the sequences after compacting or purging an almost-empty stream to seq 2 (#7627)
  • Combining skip sequences and compactions will no longer overwrite the block at the wrong offset, correcting a corrupt record state error (#7627)
  • Compactions that reclaim over half of the available space now use an atomic write to avoid losing messages if killed (#7627)
  • Filestore compaction should no longer result in no idx present cache errors (#7634)
  • Filestore compaction now correctly adjusts the high and low sequences for a message block, as well as cleaning up the deletion map accordingly (#7634)
  • Potential stream desyncs that could happen during stream snapshotting have been fixed (#7655)
  • Raft will no longer allow multiple membership changes to take place concurrently (#7565, #7609)
  • Raft will no longer count responses from peer-removed nodes towards quorum (#7589)
  • Raft quorum counting has been refactored so the implicit leader ack is now only counted if still a part of the membership (#7600)
  • Raft now writes the peer state immediately when handling a peer-remove to ensure the removed peers cannot unexpectedly reappear after a restart (#7602)
  • Raft will no longer allow peer-removing the one remaining peer (#7610)
  • Add peer operations to Raft can no longer result in disjoint majorities (#7632)
  • Raft groups should no longer readmit a previously removed peer if a heartbeat occurs between the peer removal and the leadership transfer (#7649)
  • Raft single node elections now transition into leader state correctly (#7642)
  • R1 streams will no longer incorrectly drift last sequence when exceeding limits (#7658)
  • Deleted streams are no longer wrongfully revived if stalled on an upper-layer catchup (#7668)
  • A panic that could happen when receiving a shutdown signal while JetStream is still starting up has been fixed (#7683)
  • JetStream usage stats now correctly reflect purged whole blocks when optimising large purges (#7685)
  • Recovering JetStream encryption keys now happens independently of the stream index recovery, fixing some cases where the key could be reset unexpectedly if the index is rebuilt (#7678)
  • Non-replicated file-based consumers now detect corrupted state on disk and are deleted automatically (#7691)
  • Raft no longer allows a repeat vote for the same term after a stepdown or leadership transfer (#7698)
  • Replicated consumers are no longer incorrectly deleted if they become leader just as JetStream is about to shut down (#7699)
  • Fixed an issue where a single truncated block could prevent storing new messages in the filestore (#7704)
  • Fixed a concurrent map iteration/write panic that could occur on WorkQueue streams during partitioning (#7708)
  • Fixed a deadlock that could occur on shutdown when adding streams (#7710)
  • A data race on mirror consumers has been fixed (#7716)
  • JetStream no longer leaks subscriptions in a cluster when a stream import/export is set up that overlaps the $JS.> namespace (#7720)
  • The filestore will no longer waste CPU time rebuilding subject state for WALs (#7721)
  • Configuring cluster_traffic in config mode has been fixed (#7723)
  • Subject intersection no longer misses certain subjects with specific patterns of overlapping filters, which could affect consumers, num pending calculations etc (#7728, #7741, #7744, #7745)
  • Multi-filtered next message lookups in the filestore can now skip blocks when faster to do so (#7750)
  • The binary search for start times now handles deleted messages correctly (#7751)
  • Consumer updates will now only recalculate num pending when the filter subjects are changed (#7753)
  • Consumers on replicated interest or workqueue streams should no longer lose interest or cause desyncs after having their filter subjects updated (#7773)
  • Interest-based streams will no longer start more check interest state goroutines when there are existing running ones (#7769)

MQTT

  • The maximum payload size is now correctly enforced for MQTT clients (#7555, thanks to @yixianOu)
  • Fixed a panic that could occur when reloading config if the user did not have permission to access retained messages (#7596)
  • Fixed account mapping for JetStream API requests when traversing non-JetStream-enabled servers (#7598)
  • QoS0 messages are now mapped correctly across account imports/exports with subject mappings (#7605)
  • Loading retained messages no longer fails after restarting due to last sequence checks (#7616)
  • A bug which could corrupt retained messages in clustered deployments has been fixed (#7622)
  • Permissions to $MQTT. subscriptions are now handled implicitly, with the exception of deny ACLs which still permit restriction (#7637)
  • A bug where QoS2 messages could not be retrieved after a server restart has been fixed (#7643)

Complete Changes

v2.11.11...v2.11.12

Release v2.12.4-RC.6

26 Jan 19:55
v2.12.4-RC.6
5d93f80

Choose a tag to compare

Release v2.12.4-RC.6 Pre-release
Pre-release

Changelog

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

Go Version

  • 1.25.6

Fixed

General

  • Internal functions for handling headers should no longer corrupt message bodies if appended (#7752)

JetStream

  • Multi-filtered next message lookups in the filestore can now skip blocks when faster to do so (#7750)
  • The binary search for start times now handles deleted messages correctly (#7751)
  • Consumer updates will now only recalculate num pending when the filter subjects are changed (#7753)
  • Consumer info calls will no longer recalculate num pending (#7758)

Complete Changes

v2.12.4-RC.4...v2.12.4-RC.6

Release v2.11.12-RC.7

26 Jan 19:55
v2.11.12-RC.7
6f77800

Choose a tag to compare

Release v2.11.12-RC.7 Pre-release
Pre-release

Changelog

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

Go Version

  • 1.25.6

Fixed

General

  • Internal functions for handling headers should no longer corrupt message bodies if appended (#7752)

JetStream

  • Multi-filtered next message lookups in the filestore can now skip blocks when faster to do so (#7750)
  • The binary search for start times now handles deleted messages correctly (#7751)
  • Consumer updates will now only recalculate num pending when the filter subjects are changed (#7753)

Complete Changes

v2.11.12-RC.5...v2.11.12-RC.7

Release v2.12.4-RC.4

20 Jan 14:58
v2.12.4-RC.4
b9c29c7

Choose a tag to compare

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

Changelog

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

Go Version

  • 1.25.6

Fixed

JetStream

  • Subject intersection no longer misses certain subjects with specific patterns of overlapping filters, which could affect consumers, num pending calculations etc (#7745)

Complete Changes

v2.12.4-RC.3...v2.12.4-RC.4

Release v2.12.4-RC.3

20 Jan 12:57
v2.12.4-RC.3
9a3c7ea

Choose a tag to compare

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

Changelog

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

Go Version

Dependencies

  • github.com/klauspost/compress v1.18.3 (#7736)
  • golang.org/x/crypto v0.47.0 (#7736)
  • golang.org/x/sys v0.40.0 (#7736)

Fixed

General

  • The config parser now correctly detects and errors on self-referencing environment variables (#7737)

JetStream

  • Subject intersection no longer misses certain subjects with specific patterns of overlapping filters, which could affect consumers, num pending calculations etc (#7741, #7744)

Complete Changes

v2.12.4-RC.2...v2.12.4-RC.3

Release v2.11.12-RC.5

20 Jan 14:57
v2.11.12-RC.5
5670a7f

Choose a tag to compare

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

Changelog

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

Go Version

  • 1.25.6

Fixed

JetStream

  • Subject intersection no longer misses certain subjects with specific patterns of overlapping filters, which could affect consumers, num pending calculations etc (#7745)

Complete Changes

v2.11.12-RC.4...v2.11.12-RC.5

Release v2.11.12-RC.4

20 Jan 12:56
v2.11.12-RC.4
29ae2bc

Choose a tag to compare

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

Changelog

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

Go Version

Dependencies

  • github.com/klauspost/compress v1.18.3 (#7736)
  • golang.org/x/crypto v0.47.0 (#7736)
  • golang.org/x/sys v0.40.0 (#7736)

Fixed

General

  • The config parser now correctly detects and errors on self-referencing environment variables (#7737)

JetStream

  • Subject intersection no longer misses certain subjects with specific patterns of overlapping filters, which could affect consumers, num pending calculations etc (#7741, #7744)

Complete Changes

v2.11.12-RC.3...v2.11.12-RC.4