github nats-io/nats-server v2.11.0-RC.2
Release v2.11.0-RC.2

pre-releaseone day ago

Changelog

This release also includes all fixes and improvements from 2.10.26 and earlier.

Go Version

Dependencies

  • golang.org/x/crypto v0.36.0 (#6618)
  • golang.org/x/sys v0.31.0 (#6618)
  • golang.org/x/time v0.11.0 (#6618)
  • github.com/google/go-tpm v0.9.3 (#6295)
  • github.com/antithesishq/antithesis-sdk-go v0.4.3-default-no-op (#6164)

Added

General

  • Distributed message tracing (#5014, #5057)
    • A message with the Nats-Trace-Dest header set to a valid subject will receive events representing what happens to the message as it moves through the system
    • Events contain information such as ingress, subject mapping, stream exports, service imports, egress to subscriptions, routes, gateways or leafnodes
    • An additional Nats-Trace-Only header, if set to true, will produce the same tracing events but will not deliver the message to the final destination
  • Configuration state digest (#4325)
    • A hash of the configuration file can be generated using the -t option on the command line
    • The hash of the currently running configuration file can be seen in the config_digest option in varz
  • Enable scoped users to have templates that are not limited to a subject token (#5981)

JetStream

  • Per-message TTLs (#6272, #6354, #6363, #6370, #6376, #6385, #6400)
    • The Nats-TTL header, provided either as a string duration (1m, 30s) or an integer in seconds, will age out the message independently of stream limits
    • More information on this is available in ADR-43
  • Subject delete markers on MaxAge (#6378, #6389, #6393, #6400, #6404, #6428, #6432)
    • The SubjectDeleteMarkerTTL stream configuration option determines whether to place marker messages and how long they should live for
    • The marker message will have a Nats-Marker-Reason header explaining which limit caused the marker to be left behind
    • More information on this is available in ADR-43
  • Pull consumer priority groups with pinning and overflow (#5814, #6078, #6081)
    • Allows patterns such as one consumer receiving all messages, but handing over to a second consumer if the first one fails, or groups of clients accessing the same consumer should have different priorities
    • The PriorityGroups and PriorityPolicy options in the consumer configuration control the policy
    • More information on this is available in ADR-42
  • Consumer pausing (#5066)
    • The PauseUntil consumer configuration option suspends message delivery to the consumer until the time specified is reached, after which point it will resume automatically
  • Asset versioning (#5850, #5855, #5857)
    • More information on this is available in ADR-44
  • Multi-get directly from a stream (#5107)
    • More information on this is available in ADR-31
  • Pedantic mode (#5245)
    • Ensures that stream and consumer creates or updates will fail if the resulting configuration would differ due to defaults, useful for desired-state configuration
  • Stream ingest rate limiting (#5796)
    • New max_buffered_size and max_buffered_msgs options in the jetstream block of the server config control how many publishes should be queued before rate-limiting, making it easier to protect the system against Core NATS publishes into JetStream
    • Where a reply subject is provided, rate-limited messages will receive a 429 “Too Many Requests” response and can retry later
  • Support for Nats-Expected-Last-Subject-Sequence-Subject header, customising the subject used when paired with Nats-Expected-Last-Subject-Sequence (#5281) Thanks to @cchamplin for the contribution!
  • Ability to move cluster Raft traffic into the asset account instead of using the system account using the new cluster_traffic configuration option (#5466, #5947)
  • Ability to specify preferred placement tags or clusters using preferred when issuing stepdown requests to the metaleader, streams or consumers (#6282, #6484)
  • Implement strict decoding for JetStream API requests with the new strict option in the jetstream block of the server config (#5858)
  • JetStream encryption on Windows can now use the TPM for key storage (#5273)
  • The js_cluster_migrate option can now be configured with a delay, controlling how long before a failure would result in asset migration (#5903)

Leafnodes

  • Support for TLS First on leafnode connections with the handshake_first option (#4119, #5783)

WebSocket

MQTT

  • SparkplugB Aware support (#5241)

Improved

General

  • A graceful shutdown caused by the SIGTERM signal will now return exit code 0 instead of exit code 1 (#6336)

Fixed

General

  • Server, cluster and gateway names containing spaces will now be rejected, since these can cause issues (#5676)

JetStream

  • Message removals due to acks in clustered interest-based or work queue streams are now proposed through Raft (#6140)
    • Ensures that the removal ordering across all replicas is consistent, but may increase the amount of replication traffic
  • Consistency improvements for the metalayer, streams and consumers (#6194, #6485, #6518)
    • A new leader only starts responding to read/write requests once it's initially up-to-date with its Raft log
    • Also fixes issues where KV creates/updates to a key during leader changes could desync the stream
  • Replicated consumers should no longer skip redeliveries of unacknowledged messages after a leader change (#6566)
  • Consumer starting sequence is now always respected, except for consumers used for sources/mirrors (#6253)

Complete Changes

v2.10.0...v2.11.0-RC.2

Don't miss a new nats-server release

NewReleases is sending notifications on new releases.