Skip to content

Releases: nats-io/nats-server

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

Release v2.12.4-RC.2

15 Jan 17:21
v2.12.4-RC.2
4faf8db

Choose a tag to compare

Release v2.12.4-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.5

Added

Monitoring

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

Fixed

JetStream

  • 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)
  • A subject interest check bug that could exit early due to a partial wildcard has been fixed (#7728)

Complete Changes

v2.12.4-RC.1...v2.12.4-RC.2

Release v2.11.12-RC.3

15 Jan 17:18
v2.11.12-RC.3
9f1e3ac

Choose a tag to compare

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

Changelog

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

Go Version

  • 1.25.5

Added

Monitoring

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

Fixed

JetStream

  • 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)
  • A subject interest check bug that could exit early due to a partial wildcard has been fixed (#7728)

Complete Changes

v2.11.12-RC.2...v2.11.12-RC.3

Release v2.12.4-RC.1

06 Jan 14:40
v2.12.4-RC.1
c733512

Choose a tag to compare

Release v2.12.4-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.5

Dependencies

  • github.com/google/go-tpm v0.9.8 (#7696)
  • github.com/nats-io/nats.go v1.48.0 (#7696)

Improved

JetStream

  • Creating consumer file stores no longer contends on the stream lock, improving consumer create performance on heavily loaded streams (#7700)

Fixed

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)

Complete Changes

v2.12.3...v2.12.4-RC.1

Release v2.11.12-RC.2

06 Jan 14:39
v2.11.12-RC.2
8d98892

Choose a tag to compare

Release v2.11.12-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.5

Dependencies

  • github.com/google/go-tpm v0.9.8 (#7696)
  • github.com/nats-io/nats.go v1.48.0 (#7696)

Improved

JetStream

  • Creating consumer file stores no longer contends on the stream lock, improving consumer create performance on heavily loaded streams (#7700)

Fixed

JetStream

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

Complete Changes

v2.11.12-RC.1...v2.11.12-RC.2

Release v2.11.12-RC.1

18 Dec 17:49
v2.11.12-RC.1
0261314

Choose a tag to compare

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

  • github.com/google/go-tpm v0.9.7 (#7578)
  • github.com/nats-io/nkeys v0.4.12 (#7578)
  • golang.org/x/crypto v0.45.0 (#7578)
  • github.com/klauspost/compress v1.18.2 (#7604)
  • github.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op (#7604)
  • golang.org/x/crypto v0.46.0 (#7648)
  • golang.org/x/sys v0.39.0 (#7648)

Added

General

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

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)

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)

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)

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-RC.1

Release v2.12.3

17 Dec 13:38
v2.12.3
450a519

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.7 (#7578)
  • github.com/nats-io/nkeys v0.4.12 (#7578)
  • golang.org/x/crypto v0.45.0 (#7578)
  • github.com/klauspost/compress v1.18.2 (#7604)
  • github.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op (#7604)
  • golang.org/x/crypto v0.46.0 (#7648)
  • golang.org/x/sys v0.39.0 (#7648)

Added

General

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

Improved

JetStream

  • The scan for the last sourced message sequence when setting up a subject-filtered source is now considerably faster (#7553)
  • The metalayer will now stage and deduplicate recovery operations at startup, instead of rapidly applying and then undoing conflicting assignments (#7540)
  • Consumer interest checks on interest-based streams are now significantly faster when there are large gaps in interest (#7656)

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)

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)
  • Raft will no longer allow multiple membership changes to take place concurrently (#7565, #7609)
  • 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)
  • Raft will no longer count responses from peer-removed nodes towards quorum (#7589)
  • 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 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)
  • The DiscardNewPerSubject retention policy is now enforced by the leader before proposing rather than by individual replicas, reducing the potential for stream desync (#7607)
  • 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 message lookups will now expire the cache if a cache error is encountered (#7630)
  • Improved error handling within the loading of message blocks if not already cached (#7631)
  • Add peer operations to Raft can no longer result in disjoint majorities (#7632)
  • 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)
  • Raft groups should no longer readmit a previously removed peer if a heartbeat occurs between the peer removal and the leadership transfer (#7649)
  • Potential stream desyncs that could happen during stream snapshotting have been fixed (#7655)

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.12.2...v2.12.3