Skip to content

Releases: nats-io/nats-server

Release v2.9.10

20 Dec 15:54
4caf6aa
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.4: Both the release executables and Docker images are built with this Go release

Improved

  • JetStream
    • Improve performance and latency with large number of sparse consumers (#3710)
    • Simplify locking for consumer info requests (#3714)

Fixed

  • JetStream

    • Ensure previously assigned nodes are removed from stream assignment (#3707, #3709)
    • Bad first sequence and expiration stopped working after server restart (#3711)
    • Fix no-quorum issue if leader is restarted with a memory-based clustered stream (#3713)
    • Fix dangling message block on compaction/cleanup which could prevent a stream from restoring (#3717) thanks to @k15r for the report
    • Prevent overlapping stream subjects on stream update in non-clustered JetStream (#3715)
  • Monitoring

    • /healthz?js-enabled=true behavior now properly asserts whether JetStream is enabled if it is expected to be and does not check for health of the assets. (#3704)

Complete Changes

v2.9.9...v2.9.10

Release v2.9.9

08 Dec 17:44
825949b
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.4: Both the release executables and Docker images are built with this Go release

Improved

  • JetStream

    • Avoid full state snapshot for streams with many deleted items (#3680)
    • Refactor to make stream removal from server consistent (#3691)
  • Help/Usage

    • Display two additional --reload signal options, ldm and term (#3683)

Fixed

  • Authorization

    • Prevent returning no_auth_required when a client tries to connect in operator mode (#3667)
      • Any client (Java) that suppressed sending credentials before of this flag could be affected.
      • This only affects the 2.9.8 server version
  • JetStream

    • Tag policies not honored during stream replica reassignment after a peer is removed (#3678)
    • Address issues when concurrent "create" requests for the same stream are issued (#3679)
    • Server panic when consumer state was not decoded correctly (#3688)
    • Ensure consumers that are deleted on startup are removed from the system (#3689)
    • Fixed JetStream remained disabled for reactivated JWT accounts (#3690, thank you @JulienVdG)
  • Leafnodes

Complete Changes

v2.9.8...v2.9.9

Release v2.9.8

22 Nov 20:53
60e335a
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.3: Both release executables and Docker images are built with this Go release.

Monitoring:

  • JetStream:
    • Server might crash if a pull consumer with an activity threshold is deleted immediately after a message ack (#3658). Thanks to @jdhenke for the report.
  • Server Info:
    • If no_auth_user is set, clear the auth required flag in the server info presented to the client (#3659)

Complete Changes

v2.9.7...v2.9.8

Release v2.9.7

17 Nov 16:58
1e76678
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.3: Both release executables and Docker images are built with this Go release.

Improved:

  • JetStream:
    • Processing of acknowledgments (#3624)
    • Stream ingest performance with large numbers of consumers (#3633)
    • StreamDetail now includes stream creation for /healthz reporting. Thanks to @raypinto for the contribution (#3646)

Fixed

  • JetStream:
    • For "Interest" or "WorkQueue" policy streams, when a consumer was deleted, a stream view could cause high CPU or memory usage. Thanks to @Kaarel for the report (#3610)
    • Make sure to enforce HA asset limits during peer processing as well as assignment (#3614)
    • Account max streams/consumers not always honored (#3615)
    • Reduce some warning log messages "append entries" (#3619)
    • Logic bug that would prevent some stream messages from being deleted. Thanks to @Kaarel for the report (#3620, #3625)
    • Account removal leaks subscriptions. Thanks to @JulienVdG for the report (#3627)
    • Server fails to start on concurrent map read/write (#3629, #3634)
    • Possible panic on stream info when leader is not yet or elected or loses quorum. Thanks to @apuckey for the report (#3631)
    • Allow any type of ack to suppress auto-cleanup of consumer (#3635)
    • Make mirror consumers use filtered version of consumer create (#3638)
    • WorkQueue was not correctly rejecting overlapping consumers in some cases. Thanks to @Kilio22 for the report (#3640)
    • Make sure header keys do not have additional prefixes. Thanks to @osmanovv for the report (#3649)
  • Routing:
    • TLS connections to discovered server may fail (#3611, #3613)
  • Weighted subject mappings updates not applied (#3618)

Complete Changes

v2.9.6...v2.9.7

Release v2.9.6

04 Nov 16:07
289a9e1
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.3: Both release executables and Docker images are built with this Go release.

Fixed

  • JetStream:
    • Possible panic on some rare cases where a clustered consumer monitor go routine started while the consumer was deleted or scaled down to an R1. Some tracing could have caused a panic (#3599)
    • On stream proposal failures, the server would incorrectly warn about high stream lag. Thanks to @kino71 for the report (#3601)
    • Stream sources with OptStartTime would get redelivered messages on server restart. Thanks to @DavidCockerill for the report (#3606)
    • Scaling down a replicated stream (R>1) to R1 while it has no quorum, for instance due to a network partition, would leave the stream in a bad state and there would be a constant report of "No quorum, stalled" for this stream, even after the network partition is resolved (#3608)
  • LeafNode:
    • Possible duplicate messages in complex setup. Thanks to @chenchunping for the report (#3604)

Complete Changes

v2.9.5...v2.9.6

Release v2.9.5

01 Nov 21:42
ceebf53
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.3: Both release executables and Docker images are built with this Go release.

Fixed

  • JetStream:
    • Honor MaxMsgsPerSubject on stream update (#3595)
    • Errors such as "wrong sequence for skipped msg" or "expected sequence does not match store " while processing snapshots of streams with expired messages. Thanks to @MauriceVanVeen and @sylrfor the reports (#3589, #3596)
  • Sublist's cache hit rate would be wrong in presence of multiple accounts. Thanks to @aopetrov86 for the report and contribution (#3591)

Complete Changes

v2.9.4...v2.9.5

Release v2.9.4

27 Oct 22:48
0b95294
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.2: Both release executables and Docker images are built with this Go release.

Fixed

  • Configuration Reload:
    • The option allow_non_tls would be ignored after a configuration reload. Thanks to @JulienVdG for the report (#3583)
  • JetStream:
    • Possible deadlock. Thanks to @ashumkin for the report and @neilalexander for the contribution (#3555)
    • Possible panic in disk full situations. Thanks to @fantashley for the contribution (#3560, #3568)
    • "First sequence mismatch" after a restart/deployment with streams that have message TTLs. Thanks to @MauriceVanVeen for the report (#3567)
    • Update of an R1 consumer would not get a response. The update was accepted by the server, but the client library or NATS CLI would timeout waiting for the response (#3574)
    • Update of a consumer's InactiveThreshold would not always take effect. Thanks to @neilalexander for the contribution (#3575)
    • A consumer may not be removed based on InactiveThreshold in presence of gateways (#3575)
    • Migration of ephemerals on server shutdown was not working and could create "ghost" consumers on servers restart, that is, consumers that would be listed by the meta leader, but getting information about this consumer would fail. Migration will no longer occur, instead, all R1 pull consumers will be notified that the server is shutting down, invalidating the pending requests (#3576)
    • Consumers on a Limits policy stream could have their replicas changed to R1 (#3576)
    • Ensure that RAFT communication is properly stopped when needed, which otherwise could cause server memory usage increase (#3577)
    • Adding a warning when the inbound of messages causes a lag with the storage layer. In future release, the producers may be notified through a PubAck failure that the message cannot be accepted (#3578)
    • Added pending messages/bytes to pull request errors and status: when the server responds to the client library that a request has timed-out, or server is shutdown, etc..., the response will now include the request pending messages and bytes (#3572, #3587)
    • More messages than the max_msgs_per_subject value could be recovered on server restart following an abnormal server exit (#3579, #3582)
  • Leafnode:
    • Existing subscriptions would be sent to leafnodes even though they violated permissions. The publish side would be doing the right thing by not sending the messages over, but the subscription interest was still sent (#3585)
  • MQTT:
    • Subjects mapping were not working. Thanks to @ozon2 for the report (#3552)
  • Routing:
    • An implicit route may not reconnect, regardless of the ConnectRetries setting. This can happen in configurations where the routes[] block contains only the seed (and not as a name that could resolve to each IP of the cluster). If a route to a discovered server is disconnected, it may not try to reconnect due to the implicit nature of that connection. Thanks to @wubumihuo for the report (#3573)

Complete Changes

v2.9.3...v2.9.4

Release v2.9.3

10 Oct 21:12
25e82d7
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.2: Both release executables and Docker images are built with this Go release.

Fixed

  • JetStream:
    • Unresponsiveness (health check failures, routes being blocked) while creating a RAFT group when disk performance if very slow. Thanks to @TomasVojacek for the report (#3519)
    • Purge with additional options may leave some messages in the stream (#3529)
    • Prevent stack overflow when an account imports its own export. CVE-2022-42709 (#3538)
    • Prevent panic on negative replicas count. CVE-2022-42708 (#3539)
    • User-provided ephemeral consumer name was not used in cluster mode, that is, the server would still pick a random name (#3537)
  • Added missing command line options in the -help section. Thanks to @ariel-zilber for the contributions (#3523, #3527)

Complete Changes

v2.9.2...v2.9.3

Release v2.9.2

29 Sep 21:35
6d81dde
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.1: Both release executables and Docker images are built with this Go release.

Improved:

  • Fan-out performance degraded between v2.8.4 and v2.9.0. This was mainly due to addition of message count/size accounting per-account. Some code refactoring restored or even increased the performance compared to v2.8.4 (#3504)

Fixed

  • JetStream:
    • Prevent panic processing a consumer assignment. This could happen in rare situations where a stream would catchup and start processing consumer assignments while the stream itself was "stopped", for instance during a cluster-reset event following a sequence mismatch detection, etc... (#3498)
    • The FileStore implementation could have held into memory of message blocks for longer (about 5 seconds) than needed. In situations where the stream was filling up quickly, the amount of blocks held in memory could grow enough that even 5 seconds expiration could cause the memory growth to be noticeable, even more so if the garbage collection has no reason to trigger if the overall memory usage is below the host's limit (#3501)
    • Scaling a consumer down to a R=1 would work but not send a response to the CLI/application requesting that change. That is, if an application would call js.UpdateConsumer() (using the Golang client library) with a replica of 1, the call would timeout but the operation would actually succeed (#3502)
    • The consumer names paging had issues and could have returned only the API limit, which for this request is 1024 (#3510)
    • Some streams may fail to be recovered if a meta-layer snapshot was done but an upstream source or mirror changed it subjects (#3508)
    • Redeliveries for consumers with the "LastPerSubject" delivery policy were not honored. Thanks to @brentd for the report (#3511)
  • Possible exit of NATS Server running as a Windows service without logging enabled when server would report invalid protocols. The workaround is to enable logging (specify a log file as opposed to have the logging directed to the Windows Event Logs). Thanks to @BentTranberg for the report (#3497)

Complete Changes

v2.9.1...v2.9.2

Release v2.9.1

22 Sep 20:56
2363a2c
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.19.1: Both release executables and Docker images are built with this Go release.

Added

  • JetStream:
    • Ability to remove a server by peer ID instead of server name (#3473)
    • Peer ID in the meta_cluster of statsz or jsz monitoring endpoint (#3476)
    • Ability to apply a discard new policy per subject. A new JSON field in the stream configuration called discard_new_per_subject can now be set (along with discard new policy and max messages per subject > 0) (#3487)

Improved

Updated

Changed

  • JetStream:
    • When filtering a source stream, use the new consumer create API subject (#3478)

Fixed

  • JetStream:
    • Peer randomization when creating consumers group for replicas of 1. Thanks to @goku321 for the contribution (#3470)
    • Added an error if consumer's Name and Durable are not equal when sending to the new $JS.API.CONSUMER.CREATE.%s.%s.%s subject (#3471)
    • Server was not sending a 409 to the client library when a pull request was closed after sending at least a message but could not send more if that would exceed the max_bytes pull request limit (#3474)
    • Possible panic on peer remove on server shutdown (#3477)
    • Filtered consumers may also receive messages on other subjects from the stream. Thanks to @perestoronin for the report (#3486)
  • LeafNode:
    • A server that accepts a leaf connection on the websocket port, and the websocket{} block had a no_auth_user defined, this user was not being used for the account binding for that leaf node connection (#3489)
  • Edge condition handling in {{Split()}} subject mapping function (#3463)

Complete Changes

v2.9.0...v2.9.1