Skip to content

Releases

Release v2.15.3

Choose a tag to compare

@github-actions github-actions released this 11 Nov 12:27
v2.15.3
2a9066e

Changelog

Refer to the 2.15 Upgrade Guide for backwards compatibility notes with 2.14.x.

Go Version

  • 1.27.4

Dependencies

  • github.com/nats-io/jwt/v2 v2.8.3 (#8861)
  • github.com/nats-io/nkeys v0.4.17 (#8861)
  • github.com/antithesishq/antithesis-sdk-go v0.9.0-default-no-op (#8885)
  • github.com/klauspost/compress v1.20.4 (#8885)
  • golang.org/x/sys v0.50.0 (#8885)

Added

General

  • Account subject mappings, imports, exports and leafnode remote permissions now support the {{account-hash()}}, {{account-hash-import()}} and {{account-hash-leaf-remote()}} subject mapping functions (#8670)
  • TLS configuration now supports verify: optional, and the command line supports --tlsverify=optional, verifying client certificates when provided while allowing clients without certificates (#8812, contributed by @macphersonjamie)
  • Leafnode connections now support a configurable ping_interval (#8718, contributed by @stackedbyaradhya)
  • Gateway connections now support a configurable ping_interval (#8717, contributed by @stackedbyaradhya)
  • The command line now supports -t --test_reload <file> to check whether a configuration change can be reloaded or requires a restart, returning exit code 3 when a restart is required; embedded servers can use CheckReload and CheckReloadOptions (#8829)

Monitoring

  • Healthz now supports leaf-remotes-connected=true, returning an unavailable status until every enabled solicited leafnode remote is connected (#8735, contributed by @edjeffreys)

Improved

General

  • Route, gateway and leafnode connection logs now include remote destinations (#8755)
  • Account import failures now log their reasons at error level (#8771)
  • Gateway connections now validate protocol operations consistently with route connections (#8780)

JetStream

  • Filestore subject matching and pending message calculations now avoid unnecessary scans and stop earlier when matches are found (#8784, #8803, #8806, #8808, #8813)
  • Looking up the last sequence for a subject no longer requires loading the message, reducing work for stream operations and fast batch publishing (#8807)
  • Filestore scans with single or multiple subject filters now avoid copying messages that do not match (#8854, #8855)
  • Consumer redelivery queues no longer copy all remaining entries on each dequeue, reducing delays to delivery and acknowledgement processing with large redelivery backlogs (#8635, contributed by @as-clearview)
  • Filestore scans with multiple subject filters now handle message blocks with many deleted messages more efficiently (#8864)
  • Filestore subject scans and filtered pending-message counts now skip contiguous ranges of deleted messages (#8875, #8877)
  • Loading filestore message blocks now avoids fully parsing messages when checking for Nats-TTL and Nats-Schedule headers (#8870, contributed by @adios-404)

Fixed

General

  • Lame duck mode is no longer skipped when SIGTERM follows SIGUSR2 immediately, and servers continue to deliver their own replies after the lame duck event (#8750)
  • Configuration reloads no longer disconnect clients authorized by auth callout when their permissions have not changed (#8759)
  • Auth callout user JWT names and tags are now propagated to client information (#8720, contributed by @steve-weiland)
  • Configuration reloads now wait for server startup to finish (#8728, contributed by @edelmanjm)
  • Connz totals now correctly reflect user, MQTT client and subject filters (#8753, contributed by @NitinKumar004)
  • Connz and Subsz pagination no longer repeats or skips entries, including connections with equal sort values (#8770)
  • Windows PDH queries are now released if performance counter initialization fails (#8777, contributed by @cvas22)
  • Auth callout requests are now rejected safely when system account eventing has already shut down (#8804, contributed by @davidfarah2003)
  • Wildcard characters inside a subject token are no longer treated as wildcard tokens or allowed to cause subject matching collisions (#8765)
  • Account updates no longer unnecessarily recheck importers when export revocations have not changed (#8851)
  • Configuration checks with -t now apply command line flags and validate options consistently with server startup (#8829)
  • Duplicate non-queue subscriptions received over routes no longer leak interest to leafnodes and gateways (#8846)
  • Gateway accounts in interest-only mode no longer stop receiving messages when an in-flight message races with removal of the last subscription (#8853, contributed by @paulwe)
  • Encrypted auth callouts are now rejected when the server has no XKey available (#8878)

JetStream

  • Consumer info requests no longer report success for assignments that have not been committed (#8741)
  • Push consumers with a RateLimit no longer stall indefinitely when a message exceeds the rate limiter burst size (#8748)
  • Stream scale-up from R1 can now make progress under continuous writes, and scale-down no longer stalls on peers that were never added as members (#8762)
  • Stalled stream restores now report failure through the restore completion advisory, consistently with other failed restores (#8691, contributed by @akarazhev)
  • JetStream no longer shuts down prematurely during server shutdown or lame duck mode (#8708, contributed by @yousefissa)
  • Raft meta-group setup failures now stop the write-ahead log instead of leaking it (#8722, contributed by @clwluvw)
  • Leader transfers now retry promptly when the selected successor is slow, prefer caught-up peers and avoid persisting the same term and vote twice (#8751)
  • Interest retention cleanup no longer purges a stream when a consumer has a zero check floor, and compaction is bounded by the stream's last sequence (#8757, contributed by @tsite)
  • Filestore MultiLastSeqs no longer skips matching subjects (#8769)
  • Fixed a directory creation race when enabling account storage concurrently with stream creation (#8767, contributed by @ansh0014)
  • Deleting a stream no longer races with account directory cleanup (#8774, contributed by @ansh0014)
  • Sources no longer discard the remainder of a batch when one sourced message is rejected (#8772)
  • Pull requests made through service imports are now removed when the requester loses interest, even while response wildcard interest remains (#8797)
  • Consumers no longer deliver while a reset is in flight or report later deliveries in reset responses, and durable mirrors and sources no longer skip messages after a reset or stale delivery (#8802)
  • Memory store purge and last-sequence scans are now bounded by the possible sequence range (#8815)
  • Raft health checks now wait for the leader's initial data to be applied, remain stable between heartbeats and during leader changes, and allow newly assigned replicated streams and consumers time to start (#8817)
  • Resuming a paused consumer now wakes its delivery loop immediately, allowing pending pull requests and push deliveries to proceed (#8791)
  • AckAll acknowledgements are no longer ignored after acknowledging a redelivered message (#8839)
  • Filestore recovery failures now return the original error instead of panicking, preserve existing stream data and avoid incorrect storage accounting (#8844, contributed by @rleungx)
  • Streams and consumers with unsupported configuration values are now correctly marked offline, updates are rejected by meta leaders that cannot support them, and internal proposals preserve their stored configurations (#8843)
  • Paused Raft followers can now request newer snapshots and compact their logs while catching up, preventing unbounded log growth and excessive memory use when replay resumes (#8842)
  • Filestore recovery scans now persist per-message state indexes even if no new messages are published, and backward subject scans skip irrelevant blocks (#8849)
  • Clustered health checks now report write errors on R1 streams (#8850)
  • Removed peers in unmanaged Raft groups can no longer rejoin as leader (#8847)
  • Scaling streams and consumers to or from R1 no longer loses writes or acknowledgements during the transition or violates atomic batch guarantees (#8766)
  • Resetting consumers with the last_per_subject delivery policy now rebuilds the last-message-per-subject selection, preserves the correct delivery position after leader changes, and reports lookup errors instead of ignoring them (#8862)
  • Filestore encryption key creation failures no longer leak file descriptors (#8873)
  • The filestore access-time worker now shuts down reliably when the last store closes, preventing worker leaks or stopped timestamp updates when stores are reopened (#8794, contributed by @ajaykr0905)
  • Rebuilding message deduplication state now skips deleted messages and expires restored entries at the end of their original duplicate window (#8874)
  • Restoring a stream from a V2 snapshot now rebuilds message deduplication state, restoring duplicate detection and Nats-Expected-Last-Msg-Id checks without a server restart (#8871, contributed by @muhadyan)

Leafnodes

  • Isolated spoke leafnodes no longer forward downstream leafnode interest to their hubs, and avoid collecting interest that cannot be forwarded (#8749)
  • Leafnode interest is now withdrawn correctly when an outbound gateway connection closes (#8758)
  • Fixed a data race when reading route leafnode origin support (#8779)
  • Leafnode deny_imports no longer drops replies to hub requests, and account JWT or default permission updates no longer lose leafnode interest or reset permissions incorrectly (#8800)
  • Leafnode connections no longer become stale when a hub sends many subscriptions during connection setup (#8811)
  • Leafnode connections closed during acceptance are now removed from the server's connection list, preventing inflated leafnode counts and stale Leafz entries (#8838, ...
Read more

Release v2.14.10

Choose a tag to compare

@github-actions github-actions released this 11 Nov 12:27
v2.14.10
d3b938b

Changelog

Refer to the 2.14 Upgrade Guide for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.

Go Version

  • 1.26.11

Dependencies

  • github.com/nats-io/jwt/v2 v2.8.3 (#8861)
  • github.com/nats-io/nkeys v0.4.17 (#8861)
  • github.com/antithesishq/antithesis-sdk-go v0.9.0-default-no-op (#8885)
  • github.com/klauspost/compress v1.20.4 (#8885)
  • golang.org/x/sys v0.50.0 (#8885)

Added

General

  • Account subject mappings, imports, exports and leafnode remote permissions now support the {{account-hash()}}, {{account-hash-import()}} and {{account-hash-leaf-remote()}} subject mapping functions (#8670)
  • TLS configuration now supports verify: optional, and the command line supports --tlsverify=optional, verifying client certificates when provided while allowing clients without certificates (#8812, contributed by @macphersonjamie)
  • Leafnode connections now support a configurable ping_interval (#8718, contributed by @stackedbyaradhya)
  • Gateway connections now support a configurable ping_interval (#8717, contributed by @stackedbyaradhya)

Monitoring

  • Healthz now supports leaf-remotes-connected=true, returning an unavailable status until every enabled solicited leafnode remote is connected (#8735, contributed by @edjeffreys)

Improved

General

  • Route, gateway and leafnode connection logs now include remote destinations (#8755)
  • Account import failures now log their reasons at error level (#8771)
  • Gateway connections now validate protocol operations consistently with route connections (#8780)

JetStream

  • Filestore subject matching and pending message calculations now avoid unnecessary scans and stop earlier when matches are found (#8784, #8803, #8806, #8808, #8813)
  • Looking up the last sequence for a subject no longer requires loading the message, reducing work for stream operations and fast batch publishing (#8807)
  • Filestore scans with single or multiple subject filters now avoid copying messages that do not match (#8854, #8855)
  • Consumer redelivery queues no longer copy all remaining entries on each dequeue, reducing delays to delivery and acknowledgement processing with large redelivery backlogs (#8635, contributed by @as-clearview)

Fixed

General

  • Lame duck mode is no longer skipped when SIGTERM follows SIGUSR2 immediately, and servers continue to deliver their own replies after the lame duck event (#8750)
  • Configuration reloads no longer disconnect clients authorized by auth callout when their permissions have not changed (#8759)
  • Auth callout user JWT names and tags are now propagated to client information (#8720, contributed by @steve-weiland)
  • Configuration reloads now wait for server startup to finish (#8728, contributed by @edelmanjm)
  • Connz totals now correctly reflect user, MQTT client and subject filters (#8753, contributed by @NitinKumar004)
  • Connz and Subsz pagination no longer repeats or skips entries, including connections with equal sort values (#8770)
  • Windows PDH queries are now released if performance counter initialization fails (#8777, contributed by @cvas22)
  • Auth callout requests are now rejected safely when system account eventing has already shut down (#8804, contributed by @davidfarah2003)
  • Wildcard characters inside a subject token are no longer treated as wildcard tokens or allowed to cause subject matching collisions (#8765)
  • Account updates no longer unnecessarily recheck importers when export revocations have not changed (#8851)
  • Duplicate non-queue subscriptions received over routes no longer leak interest to leafnodes and gateways (#8846)
  • Gateway accounts in interest-only mode no longer stop receiving messages when an in-flight message races with removal of the last subscription (#8853, contributed by @paulwe)

JetStream

  • Consumer info requests no longer report success for assignments that have not been committed (#8741)
  • Push consumers with a RateLimit no longer stall indefinitely when a message exceeds the rate limiter burst size (#8748)
  • Stalled stream restores now report failure through the restore completion advisory, consistently with other failed restores (#8691, contributed by @akarazhev)
  • JetStream no longer shuts down prematurely during server shutdown or lame duck mode (#8708, contributed by @yousefissa)
  • Raft meta-group setup failures now stop the write-ahead log instead of leaking it (#8722, contributed by @clwluvw)
  • Leader transfers now retry promptly when the selected successor is slow, prefer caught-up peers and avoid persisting the same term and vote twice (#8751)
  • Interest retention cleanup no longer purges a stream when a consumer has a zero check floor, and compaction is bounded by the stream's last sequence (#8757, contributed by @tsite)
  • Filestore MultiLastSeqs no longer skips matching subjects (#8769)
  • Fixed a directory creation race when enabling account storage concurrently with stream creation (#8767, contributed by @ansh0014)
  • Deleting a stream no longer races with account directory cleanup (#8774, contributed by @ansh0014)
  • Sources no longer discard the remainder of a batch when one sourced message is rejected (#8772)
  • Pull requests made through service imports are now removed when the requester loses interest, even while response wildcard interest remains (#8797)
  • Consumers no longer deliver while a reset is in flight or report later deliveries in reset responses, and durable mirrors and sources no longer skip messages after a reset or stale delivery (#8802)
  • Memory store purge and last-sequence scans are now bounded by the possible sequence range (#8815)
  • Raft health checks now wait for the leader's initial data to be applied, remain stable between heartbeats and during leader changes, and allow newly assigned replicated streams and consumers time to start (#8817)
  • Resuming a paused consumer now wakes its delivery loop immediately, allowing pending pull requests and push deliveries to proceed (#8791)
  • AckAll acknowledgements are no longer ignored after acknowledging a redelivered message (#8839)
  • Filestore recovery failures now return the original error instead of panicking, preserve existing stream data and avoid incorrect storage accounting (#8844, contributed by @rleungx)
  • Streams and consumers with unsupported configuration values are now correctly marked offline, updates are rejected by meta leaders that cannot support them, and internal proposals preserve their stored configurations (#8843)
  • Paused Raft followers can now request newer snapshots and compact their logs while catching up, preventing unbounded log growth and excessive memory use when replay resumes (#8842)
  • Filestore recovery scans now persist per-message state indexes even if no new messages are published, and backward subject scans skip irrelevant blocks (#8849)
  • Clustered health checks now report write errors on R1 streams (#8850)

Leafnodes

  • Leafnode interest is now withdrawn correctly when an outbound gateway connection closes (#8758)
  • Leafnode deny_imports no longer drops replies to hub requests, and account JWT or default permission updates no longer lose leafnode interest or reset permissions incorrectly (#8800)
  • Leafnode connections no longer become stale when a hub sends many subscriptions during connection setup (#8811)
  • Leafnode connections closed during acceptance are now removed from the server's connection list, preventing inflated leafnode counts and stale Leafz entries (#8838, contributed by @rnikhori)

Routes

  • Routes without pooling now validate the route pool index correctly (#8782)

Complete Changes

v2.14.9...v2.14.10

Release v2.15.3-RC.2

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

Choose a tag to compare

@github-actions github-actions released this 06 Nov 16:44
v2.15.3-RC.2
d2b86b6

Changelog

Refer to the 2.15 Upgrade Guide for backwards compatibility notes with 2.14.x.

Go Version

  • 1.27.3

Dependencies

  • github.com/nats-io/jwt/v2 v2.8.3 (#8861)
  • github.com/nats-io/nkeys v0.4.17 (#8861)

Added

General

  • The command line now supports -t --test_reload <file> to check whether a configuration change can be reloaded or requires a restart, returning exit code 3 when a restart is required; embedded servers can use CheckReload and CheckReloadOptions (#8829)

Improved

JetStream

  • Filestore scans with single or multiple subject filters now avoid copying messages that do not match (#8854, #8855)
  • Consumer redelivery queues no longer copy all remaining entries on each dequeue, reducing delays to delivery and acknowledgement processing with large redelivery backlogs (#8635, contributed by @as-clearview)

Fixed

General

  • Account updates no longer unnecessarily recheck importers when export revocations have not changed (#8851)
  • Configuration checks with -t now apply command line flags and validate options consistently with server startup (#8829)
  • Duplicate non-queue subscriptions received over routes no longer leak interest to leafnodes and gateways (#8846)
  • Gateway accounts in interest-only mode no longer stop receiving messages when an in-flight message races with removal of the last subscription (#8853, contributed by @paulwe)

JetStream

  • AckAll acknowledgements are no longer ignored after acknowledging a redelivered message (#8839)
  • Filestore recovery failures now return the original error instead of panicking, preserve existing stream data and avoid incorrect storage accounting (#8844, contributed by @rleungx)
  • Streams and consumers with unsupported configuration values are now correctly marked offline, updates are rejected by meta leaders that cannot support them, and internal proposals preserve their stored configurations (#8843)
  • Paused Raft followers can now request newer snapshots and compact their logs while catching up, preventing unbounded log growth and excessive memory use when replay resumes (#8842)
  • Filestore recovery scans now persist per-message state indexes even if no new messages are published, and backward subject scans skip irrelevant blocks (#8849)
  • Clustered health checks now report write errors on R1 streams (#8850)
  • Removed peers in unmanaged Raft groups can no longer rejoin as leader (#8847)
  • Scaling streams and consumers to or from R1 no longer loses writes or acknowledgements during the transition or violates atomic batch guarantees (#8766)

Leafnodes

  • Leafnode connections closed during acceptance are now removed from the server's connection list, preventing inflated leafnode counts and stale Leafz entries (#8838, contributed by @rnikhori)

Complete Changes

v2.15.3-RC.1...v2.15.3-RC.2

Release v2.14.10-RC.2

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

Choose a tag to compare

@github-actions github-actions released this 06 Nov 16:53
v2.14.10-RC.2
b0f941d

Changelog

Refer to the 2.14 Upgrade Guide for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.

Go Version

  • 1.26.10

Dependencies

  • github.com/nats-io/jwt/v2 v2.8.3 (#8861)
  • github.com/nats-io/nkeys v0.4.17 (#8861)

Improved

JetStream

  • Filestore scans with single or multiple subject filters now avoid copying messages that do not match (#8854, #8855)
  • Consumer redelivery queues no longer copy all remaining entries on each dequeue, reducing delays to delivery and acknowledgement processing with large redelivery backlogs (#8635, contributed by @as-clearview)

Fixed

General

  • Account updates no longer unnecessarily recheck importers when export revocations have not changed (#8851)
  • Duplicate non-queue subscriptions received over routes no longer leak interest to leafnodes and gateways (#8846)
  • Gateway accounts in interest-only mode no longer stop receiving messages when an in-flight message races with removal of the last subscription (#8853, contributed by @paulwe)

JetStream

  • AckAll acknowledgements are no longer ignored after acknowledging a redelivered message (#8839)
  • Filestore recovery failures now return the original error instead of panicking, preserve existing stream data and avoid incorrect storage accounting (#8844, contributed by @rleungx)
  • Streams and consumers with unsupported configuration values are now correctly marked offline, updates are rejected by meta leaders that cannot support them, and internal proposals preserve their stored configurations (#8843)
  • Paused Raft followers can now request newer snapshots and compact their logs while catching up, preventing unbounded log growth and excessive memory use when replay resumes (#8842)
  • Filestore recovery scans now persist per-message state indexes even if no new messages are published, and backward subject scans skip irrelevant blocks (#8849)
  • Clustered health checks now report write errors on R1 streams (#8850)

Leafnodes

  • Leafnode connections closed during acceptance are now removed from the server's connection list, preventing inflated leafnode counts and stale Leafz entries (#8838, contributed by @rnikhori)

Complete Changes

v2.14.10-RC.1...v2.14.10-RC.2

Release v2.15.3-RC.1

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

Choose a tag to compare

@github-actions github-actions released this 02 Nov 16:05
v2.15.3-RC.1
ab05672

Changelog

Refer to the 2.15 Upgrade Guide for backwards compatibility notes with 2.14.x.

Go Version

  • 1.27.3

Added

General

  • Account subject mappings, imports, exports and leafnode remote permissions now support the {{account-hash()}}, {{account-hash-import()}} and {{account-hash-leaf-remote()}} subject mapping functions (#8670)
  • TLS configuration now supports verify: optional, and the command line supports --tlsverify=optional, verifying client certificates when provided while allowing clients without certificates (#8812, contributed by @macphersonjamie)
  • Leafnode connections now support a configurable ping_interval (#8718, contributed by @stackedbyaradhya)
  • Gateway connections now support a configurable ping_interval (#8717, contributed by @stackedbyaradhya)

Monitoring

  • Healthz now supports leaf-remotes-connected=true, returning an unavailable status until every enabled solicited leafnode remote is connected (#8735, contributed by @edjeffreys)

Improved

General

  • Route, gateway and leafnode connection logs now include remote destinations (#8755)
  • Account import failures now log their reasons at error level (#8771)
  • Gateway connections now validate protocol operations consistently with route connections (#8780)

JetStream

  • Filestore subject matching and pending message calculations now avoid unnecessary scans and stop earlier when matches are found (#8784, #8803, #8806, #8808, #8813)
  • Looking up the last sequence for a subject no longer requires loading the message, reducing work for stream operations and fast batch publishing (#8807)

Fixed

General

  • Lame duck mode is no longer skipped when SIGTERM follows SIGUSR2 immediately, and servers continue to deliver their own replies after the lame duck event (#8750)
  • Configuration reloads no longer disconnect clients authorized by auth callout when their permissions have not changed (#8759)
  • Auth callout user JWT names and tags are now propagated to client information (#8720, contributed by @steve-weiland)
  • Configuration reloads now wait for server startup to finish (#8728, contributed by @edelmanjm)
  • Connz totals now correctly reflect user, MQTT client and subject filters (#8753, contributed by @NitinKumar004)
  • Connz and Subsz pagination no longer repeats or skips entries, including connections with equal sort values (#8770)
  • Windows PDH queries are now released if performance counter initialization fails (#8777, contributed by @cvas22)
  • Auth callout requests are now rejected safely when system account eventing has already shut down (#8804, contributed by @davidfarah2003)
  • Wildcard characters inside a subject token are no longer treated as wildcard tokens or allowed to cause subject matching collisions (#8765)

JetStream

  • Consumer info requests no longer report success for assignments that have not been committed (#8741)
  • Push consumers with a RateLimit no longer stall indefinitely when a message exceeds the rate limiter burst size (#8748)
  • Stream scale-up from R1 can now make progress under continuous writes, and scale-down no longer stalls on peers that were never added as members (#8762)
  • Stalled stream restores now report failure through the restore completion advisory, consistently with other failed restores (#8691, contributed by @akarazhev)
  • JetStream no longer shuts down prematurely during server shutdown or lame duck mode (#8708, contributed by @yousefissa)
  • Raft meta-group setup failures now stop the write-ahead log instead of leaking it (#8722, contributed by @clwluvw)
  • Leader transfers now retry promptly when the selected successor is slow, prefer caught-up peers and avoid persisting the same term and vote twice (#8751)
  • Interest retention cleanup no longer purges a stream when a consumer has a zero check floor, and compaction is bounded by the stream's last sequence (#8757, contributed by @tsite)
  • Filestore MultiLastSeqs no longer skips matching subjects (#8769)
  • Fixed a directory creation race when enabling account storage concurrently with stream creation (#8767, contributed by @ansh0014)
  • Deleting a stream no longer races with account directory cleanup (#8774, contributed by @ansh0014)
  • Sources no longer discard the remainder of a batch when one sourced message is rejected (#8772)
  • Pull requests made through service imports are now removed when the requester loses interest, even while response wildcard interest remains (#8797)
  • Consumers no longer deliver while a reset is in flight or report later deliveries in reset responses, and durable mirrors and sources no longer skip messages after a reset or stale delivery (#8802)
  • Memory store purge and last-sequence scans are now bounded by the possible sequence range (#8815)
  • Raft health checks now wait for the leader's initial data to be applied, remain stable between heartbeats and during leader changes, and allow newly assigned replicated streams and consumers time to start (#8817)
  • Resuming a paused consumer now wakes its delivery loop immediately, allowing pending pull requests and push deliveries to proceed (#8791)

Leafnodes

  • Isolated spoke leafnodes no longer forward downstream leafnode interest to their hubs, and avoid collecting interest that cannot be forwarded (#8749)
  • Leafnode interest is now withdrawn correctly when an outbound gateway connection closes (#8758)
  • Fixed a data race when reading route leafnode origin support (#8779)
  • Leafnode deny_imports no longer drops replies to hub requests, and account JWT or default permission updates no longer lose leafnode interest or reset permissions incorrectly (#8800)
  • Leafnode connections no longer become stale when a hub sends many subscriptions during connection setup (#8811)

Routes

  • Routes without pooling now validate the route pool index correctly (#8782)

Complete Changes

v2.15.2...v2.15.3-RC.1

Release v2.14.10-RC.1

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

Choose a tag to compare

@github-actions github-actions released this 02 Nov 16:05
v2.14.10-RC.1
4e2ac97

Changelog

Refer to the 2.14 Upgrade Guide for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.

Go Version

  • 1.26.10

Added

General

  • Account subject mappings, imports, exports and leafnode remote permissions now support the {{account-hash()}}, {{account-hash-import()}} and {{account-hash-leaf-remote()}} subject mapping functions (#8670)
  • TLS configuration now supports verify: optional, and the command line supports --tlsverify=optional, verifying client certificates when provided while allowing clients without certificates (#8812, contributed by @macphersonjamie)
  • Leafnode connections now support a configurable ping_interval (#8718, contributed by @stackedbyaradhya)
  • Gateway connections now support a configurable ping_interval (#8717, contributed by @stackedbyaradhya)

Monitoring

  • Healthz now supports leaf-remotes-connected=true, returning an unavailable status until every enabled solicited leafnode remote is connected (#8735, contributed by @edjeffreys)

Improved

General

  • Route, gateway and leafnode connection logs now include remote destinations (#8755)
  • Account import failures now log their reasons at error level (#8771)
  • Gateway connections now validate protocol operations consistently with route connections (#8780)

JetStream

  • Filestore subject matching and pending message calculations now avoid unnecessary scans and stop earlier when matches are found (#8784, #8803, #8806, #8808, #8813)
  • Looking up the last sequence for a subject no longer requires loading the message, reducing work for stream operations and fast batch publishing (#8807)

Fixed

General

  • Lame duck mode is no longer skipped when SIGTERM follows SIGUSR2 immediately, and servers continue to deliver their own replies after the lame duck event (#8750)
  • Configuration reloads no longer disconnect clients authorized by auth callout when their permissions have not changed (#8759)
  • Auth callout user JWT names and tags are now propagated to client information (#8720, contributed by @steve-weiland)
  • Configuration reloads now wait for server startup to finish (#8728, contributed by @edelmanjm)
  • Connz totals now correctly reflect user, MQTT client and subject filters (#8753, contributed by @NitinKumar004)
  • Connz and Subsz pagination no longer repeats or skips entries, including connections with equal sort values (#8770)
  • Windows PDH queries are now released if performance counter initialization fails (#8777, contributed by @cvas22)
  • Auth callout requests are now rejected safely when system account eventing has already shut down (#8804, contributed by @davidfarah2003)
  • Wildcard characters inside a subject token are no longer treated as wildcard tokens or allowed to cause subject matching collisions (#8765)

JetStream

  • Consumer info requests no longer report success for assignments that have not been committed (#8741)
  • Push consumers with a RateLimit no longer stall indefinitely when a message exceeds the rate limiter burst size (#8748)
  • Stalled stream restores now report failure through the restore completion advisory, consistently with other failed restores (#8691, contributed by @akarazhev)
  • JetStream no longer shuts down prematurely during server shutdown or lame duck mode (#8708, contributed by @yousefissa)
  • Raft meta-group setup failures now stop the write-ahead log instead of leaking it (#8722, contributed by @clwluvw)
  • Leader transfers now retry promptly when the selected successor is slow, prefer caught-up peers and avoid persisting the same term and vote twice (#8751)
  • Interest retention cleanup no longer purges a stream when a consumer has a zero check floor, and compaction is bounded by the stream's last sequence (#8757, contributed by @tsite)
  • Filestore MultiLastSeqs no longer skips matching subjects (#8769)
  • Fixed a directory creation race when enabling account storage concurrently with stream creation (#8767, contributed by @ansh0014)
  • Deleting a stream no longer races with account directory cleanup (#8774, contributed by @ansh0014)
  • Sources no longer discard the remainder of a batch when one sourced message is rejected (#8772)
  • Pull requests made through service imports are now removed when the requester loses interest, even while response wildcard interest remains (#8797)
  • Consumers no longer deliver while a reset is in flight or report later deliveries in reset responses, and durable mirrors and sources no longer skip messages after a reset or stale delivery (#8802)
  • Memory store purge and last-sequence scans are now bounded by the possible sequence range (#8815)
  • Raft health checks now wait for the leader's initial data to be applied, remain stable between heartbeats and during leader changes, and allow newly assigned replicated streams and consumers time to start (#8817)
  • Resuming a paused consumer now wakes its delivery loop immediately, allowing pending pull requests and push deliveries to proceed (#8791)

Leafnodes

  • Leafnode interest is now withdrawn correctly when an outbound gateway connection closes (#8758)
  • Leafnode deny_imports no longer drops replies to hub requests, and account JWT or default permission updates no longer lose leafnode interest or reset permissions incorrectly (#8800)
  • Leafnode connections no longer become stale when a hub sends many subscriptions during connection setup (#8811)

Routes

  • Routes without pooling now validate the route pool index correctly (#8782)

Complete Changes

v2.14.9...v2.14.10-RC.1

Release v2.15.2

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:54
v2.15.2
5a815f1

Changelog

Refer to the 2.15 Upgrade Guide for backwards compatibility notes with 2.14.x.

Go Version

  • 1.27.3, which contains mitigations for CVE-2026-111943 by distrusting eMudhra intermediate certificates (#8798)

Dependencies

  • github.com/klauspost/compress v1.20.3 (#8798)
  • golang.org/x/crypto v0.58.0 (#8798)
  • golang.org/x/sys v0.49.0 (#8798)

Fixed

General

  • Allowed connection types are now correctly respected in auth callout setups
  • Fixed a potential queue sub weight amplification in the sublist
  • OCSP responses are now correctly bound to the certificate serial number

JetStream

  • Restored v1 stream snapshots now correctly guard against excessive subject lengths, subject counts or block counts

Leafnodes

  • ACLs on leafnode connections no longer override allow/deny lists to implicitly allow $MQTT.> permissions

MQTT

  • OCSP verification for MQTT connections now correctly obeys the ocsp_peer option in the mqtt block

Complete Changes

v2.15.1...v2.15.2

Release v2.14.9

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:54
v2.14.9
9ece588

Changelog

Refer to the 2.14 Upgrade Guide for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.

Go Version

  • 1.26.10, which contains mitigations for CVE-2026-111943 by distrusting eMudhra intermediate certificates (#8798)

Dependencies

  • github.com/klauspost/compress v1.20.3 (#8798)
  • golang.org/x/crypto v0.58.0 (#8798)
  • golang.org/x/sys v0.49.0 (#8798)

Fixed

General

  • Allowed connection types are now correctly respected in auth callout setups
  • Fixed a potential queue sub weight amplification in the sublist
  • OCSP responses are now correctly bound to the certificate serial number

JetStream

  • Restored v1 stream snapshots now correctly guard against excessive subject lengths, subject counts or block counts

Leafnodes

  • ACLs on leafnode connections no longer override allow/deny lists to implicitly allow $MQTT.> permissions

MQTT

  • OCSP verification for MQTT connections now correctly obeys the ocsp_peer option in the mqtt block

Complete Changes

v2.14.8...v2.14.9

Release v2.15.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 08:40
v2.15.1
b2fd3ef

Changelog

Refer to the 2.15 Upgrade Guide for backwards compatibility notes with 2.14.x.

Go Version

Dependencies

  • github.com/klauspost/compress v1.20.1 (#8737)
  • github.com/nats-io/nats.go v1.53.1 (#8737)

Changed

JetStream

  • The max_ha_assets limit is now enforced consistently by the metalayer leader during stream and consumer placement, scaling and moves (#8639)

Gateways

  • Support for sending and handling the legacy $GR. reply prefix, used by servers prior to v2.1.2, has been removed (#8615)

Improved

JetStream

  • Stalled source and mirror flow control is now reported in stream info and warning logs, making missing $JS.FC.> imports or exports easier to diagnose (#8633)
  • Stream and consumer placement now prefers peers that have caught up with the metalayer, reducing delays in API responses (#8643)
  • Improved the performance of deleting entries from and encoding AVL sequence sets (#8646)
  • Fast batch publish now reports backward sequence gaps as well as forward gaps (#8699)
  • Stream pending message calculations avoid unnecessary filestore cache access and handle deleted sequence ranges more efficiently (#8680, #8681)
  • Stream restore format detection now stops after the first S2 chunk (#8693)
  • Stream restore waits for the preferred node to become leader, avoiding an incorrect create response during clustered restore (#8690)
  • Memory backed streams avoid copying message headers and bodies twice when storing messages (#8652, contributed by @randomizedcoder)

Monitoring

  • Leafz now reports whether a leafnode connection uses WebSockets (#8683)

MQTT

  • QoS2 PUBLISH and PUBREL processing is now pipelined for increased throughput (#8416, contributed by @levb)
  • Reduced allocations and buffer copying when processing QoS1 and QoS2 messages and issuing JetStream store and delete requests (#8624, #8625, contributed by @levb)
  • Partial packets are no longer copied in full on every read, reducing allocations and buffer copying (#8692)

Fixed

General

  • Connz requests selecting a connection by cid now correctly apply account, user and MQTT client ID filters (#8613)
  • Pipelined client operations are no longer processed after a connection is rejected for exceeding the account's max_connections limit (#8614)
  • Queue subscription deny permissions are now checked against the mapped delivery subject (#8616)
  • Outstanding reply permissions are now preserved when inherited account permissions are refreshed without changing the response policy (#8620, contributed by @0xasritha)
  • Subscription deny filters are now rebuilt atomically when inherited account permissions are refreshed, preventing a window in which denied messages could be delivered (#8622, contributed by @0xasritha)
  • Unquoted configuration values beginning with a number and a size or exponent suffix, such as 0K1abc, are now correctly parsed as strings (#8263, contributed by @koriyoshi2041)
  • Account JWT updates now reject invalid subject mappings instead of reporting success, and failed replacements no longer remove existing mappings (#8627, contributed by @vulragrag-star)
  • Cached subscription results are now cleared when an already connected client sends another CONNECT, preventing stale results from being reused after an account change (#8641, reported by @Tan-JunWei)
  • Fixed several data races affecting service imports and exports during configuration reloads and account updates (#8675)
  • Per-account routes no longer double count inbound account message and byte statistics (#8677)
  • TLS certificate pin validation now checks the correct pins after a configuration reload (#8679)
  • Auth callout rejections are now reported as authentication errors instead of account connection limit errors (#8688, contributed by @aniketatgithub)
  • Scoped ProxyRequired settings are now respected in JWTs and auth callouts (#8694)
  • Subscription interest notifications are no longer missed when a subscription is added or removed concurrently (#8703)
  • Fast batch ping no longer starts a new batch incorrectly (#8714)
  • Fixed issues with auth callout auth_users bypass
  • Fixed a PDH counter buffer overflow on Windows

JetStream

  • Stale per-message TTL entries are now removed when their messages have already been deleted, avoiding repeated expiry scans and excess CPU and memory usage (#8595, contributed by @digitalstraw)
  • The maximum deliveries exceeded advisory is now sent correctly when a consumer's max_deliver is lowered below a message's existing delivery count (#8605, contributed by @zeke-lin)
  • The consumer created time is now preserved after recovery (#8621)
  • Filestore compaction now respects the configured sync settings when replacing a message block (#8629)
  • Fixed a race during filestore compaction that could cause consumers to skip messages or lose redelivery tracking (#8623, contributed by @as-clearview)
  • Concurrent updates to R1 consumers no longer lose API responses (#8628)
  • Stream and consumer create and delete requests received during metalayer catchup now receive responses once catchup completes (#8643)
  • R1 consumer create requests no longer lose their responses when the consumer is deleted immediately afterwards (#8643)
  • Fixed a data race when handling consumer leader stepdown requests (#8647)
  • Clustered snapshots now use the correct generated names for ephemeral consumers, allowing backup validation and restore to succeed (#8651, contributed by @kris70lesgo)
  • Fixed a memory leak affecting pull requests and direct gets after a configuration reload when the system account is explicitly configured in the accounts block (#8650, contributed by @1995parham)
  • Fixed membership change, learner scale-up and metalayer commit recovery issues (#8672)
  • Fixed migration and R1 scale-up issues that could delete a running store or lose writes (#8673)
  • Recreated streams with renamed Raft groups now start their monitors correctly (#8673)
  • Consumers are no longer moved to new stream peers before those peers hold the stream data (#8678)
  • Failed clustered stream restores now clean up correctly without deleting a subsequently recreated stream or losing a stream rm response (#8702)
  • Fixed a panic when shutting down a clustered JetStream server immediately after startup (#8707, contributed by @clwluvw)
  • Idempotent stream create requests with sources no longer time out after leader changes (#8703)
  • Interest cleanup no longer compacts a stream past its last sequence during recovery (#8710, contributed by @pat-s)
  • Raft nodes will no longer leak their WAL if stopped before route connections are available (#8711, contributed by @clwluvw)
  • Recovered ephemeral consumers with inactive_threshold set are now cleaned up properly after a server restart (#8732)

Leafnodes

  • Publish permissions are now checked against the transformed subject sent over the leafnode connection, avoiding the need to also allow the original stream import subject (#8530, contributed by @fbarth-ifr)
  • Fixed incorrect pending byte accounting after a partial compressed write that could stall a leafnode connection and prevent it from reconnecting (#8636)
  • Closed leafnode connections are now correctly removed from the account's leafnode list, reducing retained memory and garbage collection pressure (#8637)
  • TLS state is now available to auth callouts when leafnodes connect over WebSockets (#8686, contributed by @jurry-duty)
  • Leafnode clients are now shed alongside regular clients during lame duck shutdown, avoiding a thundering herd (#8695)
  • Remote proxies now support TLS with https:// proxy URLs and an optional proxy tls block (#8701)
  • Remote proxies no longer incorrectly warn that nats:// URLs are unsupported or lose the hub's initial INFO message (#8701)
  • Remote proxy options are now rejected when no proxy URL is specified (#8701)
  • Leafnode isolation is now checked before the subscription permission checks, reducing CPU usage on hubs with large numbers of isolated leafnodes (#8727)
  • Leafnode interest and request/reply across account imports (#8730, contributed by @edjeffreys)

Gateways

  • The legacy $GR. reply prefix is now reserved on client ingress, preventing clients from publishing to gateway reply subjects using that prefix (#8615)

MQTT

  • Config load no longer breaks QoS1/QoS2 delivery when max_ack_pending is unset (#8671)
  • MQTT packet lengths are validated earlier against max_payload, and non-QoS 2 PUBREC packets are handled correctly (#8692)

Complete Changes

v2.15.0...v2.15.1

Release v2.14.8

Choose a tag to compare

@github-actions github-actions released this 09 Oct 08:40
v2.14.8
3e47c8f

Changelog

Refer to the 2.14 Upgrade Guide for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.

Go Version

Dependencies

  • github.com/klauspost/compress v1.20.1 (#8737)
  • github.com/nats-io/nats.go v1.53.1 (#8737)

Changed

Gateways

  • Support for sending and handling the legacy $GR. reply prefix, used by servers prior to v2.1.2, has been removed (#8615)

Improved

JetStream

  • Stalled source and mirror flow control is now reported in stream info and warning logs, making missing $JS.FC.> imports or exports easier to diagnose (#8633)
  • Stream and consumer placement now prefers peers that have caught up with the metalayer, reducing delays in API responses (#8643)
  • Improved the performance of deleting entries from and encoding AVL sequence sets (#8646)
  • Fast batch publish now reports backward sequence gaps as well as forward gaps (#8699)
  • Stream pending message calculations avoid unnecessary filestore cache access and handle deleted sequence ranges more efficiently (#8680, #8681)
  • Stream restore waits for the preferred node to become leader, avoiding an incorrect create response during clustered restore (#8690)
  • Memory backed streams avoid copying message headers and bodies twice when storing messages (#8652, contributed by @randomizedcoder)

Monitoring

  • Leafz now reports whether a leafnode connection uses WebSockets (#8683)

MQTT

  • Partial packets are no longer copied in full on every read, reducing allocations and buffer copying (#8692)

Fixed

General

  • Concurrent account JWT updates no longer invalidate stream imports and interrupt message delivery (#8610)
  • Configuration reloads no longer incorrectly disconnect operator mode clients that send an nkey (#8609)
  • Connz requests selecting a connection by cid now correctly apply account, user and MQTT client ID filters (#8613)
  • Pipelined client operations are no longer processed after a connection is rejected for exceeding the account's max_connections limit (#8614)
  • Queue subscription deny permissions are now checked against the mapped delivery subject (#8616)
  • Outstanding reply permissions are now preserved when inherited account permissions are refreshed without changing the response policy (#8620, contributed by @0xasritha)
  • Subscription deny filters are now rebuilt atomically when inherited account permissions are refreshed, preventing a window in which denied messages could be delivered (#8622, contributed by @0xasritha)
  • Unquoted configuration values beginning with a number and a size or exponent suffix, such as 0K1abc, are now correctly parsed as strings (#8263, contributed by @koriyoshi2041)
  • Account JWT updates now reject invalid subject mappings instead of reporting success, and failed replacements no longer remove existing mappings (#8627, contributed by @vulragrag-star)
  • Cached subscription results are now cleared when an already connected client sends another CONNECT, preventing stale results from being reused after an account change (#8641, reported by @Tan-JunWei)
  • Fixed several data races affecting service imports and exports during configuration reloads and account updates (#8675)
  • Per-account routes no longer double count inbound account message and byte statistics (#8677)
  • TLS certificate pin validation now checks the correct pins after a configuration reload (#8679)
  • Fast batch ping no longer starts a new batch incorrectly (#8714)
  • Auth callout rejections are now reported as authentication errors instead of account connection limit errors (#8688, contributed by @aniketatgithub)
  • Scoped ProxyRequired settings are now respected in JWTs and auth callouts (#8694)
  • Subscription interest notifications are no longer missed when a subscription is added or removed concurrently (#8703)
  • Fixed issues with auth callout auth_users bypass
  • Fixed a PDH counter buffer overflow on Windows

JetStream

  • Stream scale-down requests are now rejected when the target replica count has no configured account tier (#8608)
  • Stale per-message TTL entries are now removed when their messages have already been deleted, avoiding repeated expiry scans and excess CPU and memory usage (#8595, contributed by @digitalstraw)
  • The maximum deliveries exceeded advisory is now sent correctly when a consumer's max_deliver is lowered below a message's existing delivery count (#8605, contributed by @zeke-lin)
  • The consumer created time is now preserved after recovery (#8621)
  • Filestore compaction now respects the configured sync settings when replacing a message block (#8629)
  • Fixed a race during filestore compaction that could cause consumers to skip messages or lose redelivery tracking (#8623, contributed by @as-clearview)
  • Concurrent updates to R1 consumers no longer lose API responses (#8628)
  • Stream and consumer create and delete requests received during metalayer catchup now receive responses once catchup completes (#8643)
  • R1 consumer create requests no longer lose their responses when the consumer is deleted immediately afterwards (#8643)
  • Fixed a data race when handling consumer leader stepdown requests (#8647)
  • Fixed a memory leak affecting pull requests and direct gets after a configuration reload when the system account is explicitly configured in the accounts block (#8650, contributed by @1995parham)
  • Fixed a panic when shutting down a clustered JetStream server immediately after startup (#8707, contributed by @clwluvw)
  • Idempotent stream create requests with sources no longer time out after leader changes (#8703)
  • Recovered ephemeral consumers with inactive_threshold set are now cleaned up properly after a server restart (#8732)

Leafnodes

  • Publish permissions are now checked against the transformed subject sent over the leafnode connection, avoiding the need to also allow the original stream import subject (#8530, contributed by @fbarth-ifr)
  • Fixed incorrect pending byte accounting after a partial compressed write that could stall a leafnode connection and prevent it from reconnecting (#8636)
  • Closed leafnode connections are now correctly removed from the account's leafnode list, reducing retained memory and garbage collection pressure (#8637)
  • TLS state is now available to auth callouts when leafnodes connect over WebSockets (#8686, contributed by @jurry-duty)
  • Leafnode clients are now shed alongside regular clients during lame duck shutdown, avoiding a thundering herd (#8695)
  • Remote proxies now support TLS with https:// proxy URLs and an optional proxy tls block (#8701)
  • Remote proxies no longer incorrectly warn that nats:// URLs are unsupported or lose the hub's initial INFO message (#8701)
  • Remote proxy options are now rejected when no proxy URL is specified (#8701)
  • Leafnode interest and request/reply across account imports (#8730, contributed by @edjeffreys)

Gateways

  • The legacy $GR. reply prefix is now reserved on client ingress, preventing clients from publishing to gateway reply subjects using that prefix (#8615)

MQTT

  • Config load no longer breaks QoS1/QoS2 delivery when max_ack_pending is unset (#8671)
  • MQTT packet lengths are validated earlier against max_payload (#8692)

Complete Changes

v2.14.7...v2.14.8

⌂ 换网址