NATS - v2.9.15


Go Version

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


  • Monitoring
  • Add raft query parameter to /jsz to include group info (#3915)
  • Update /leafz to include leaf node remove server name and “spoke” flag (#3923, #3925)


  • Lower default value of jetstream.max_outstanding_catchup to prevent slow consumers between routes (#3922)
  • Note: The new value is now 64MB from 128MB. This is better optimized for 1 Gbit links, however if your links are 10 Gbit or higher, this value can be set back to 128MB if slow consumers were not previously observed.


  • Refactor intra-process queue to reduce allocations (#3894)
  • JetStream
  • Better system stability and recovery from corrupt metadata due to hard forced restarts (#3934)
  • Optimize on-disk, per-subject info update (#3867)
  • Limit concurrent blocking IO to improve stability under heavy IO loads (#3867)
  • Improve message expiry calculation for large numbers of messages (#3867)
  • Optimize when and how consumer num pending is calculated, significantly speeding up consumer info requests (#3877)
  • Improve parallel consumer creation to prevent dropped messages (#3880)
  • Properly warn on consumer state update state failures (#3892)
  • Performance of consumer creation for certain configurations (#3901)
  • Send current snapshot to followers when becoming meta-leader (#3904)
  • Ensure preferred peer during stepdown is healthy (#3905)
  • Optimized various store calls on stream state (#3910)
  • Various performance and stability under heavy IO loads (#3922) (Thank you @matkam and @davidzhao for the report and the test harness!)


  • Fix stack overflow panic in reverse entry check when inbox ends with wildcard (#3862)
  • Check if client connection name was already set when storing, preventing recursive memory growth (#3886)
  • Fix check for count of wildcard tokens in “partition” subject transform (#3887) (Thank you @MauriceVanVeen for the contribution!)
  • Fix panic if service export is nil (#3917) (Thank you @MauriceVanVeen for the report!)
  • JetStream
  • Ensure per-subject info is updated when doing stream compact (#3860)
  • Ensure account usage is updated in the filestore when extended version purge occurs (#3876)
  • Prevent consumer deletes on restart, with non-fatal errors (#3881)
  • Do not warn if consumer replicas is zero since it will be inherited from the stream (#3882)
  • Named push consumers with inactive thresholds deleted when still active (#3884)
  • Prevent spurious “Error storing entry to WAL” log messages (#3893, #3891)
  • Clean up consumer redelivery state on stream purge (#3892)
  • Clean up consumer ack pending if below stream ack floor (#3892)
  • Update ack floors on messages being expired (#3892)
  • Fix lost ack pending consumer state on partial stream purge (#3892)
  • Snapshot and compact the consumer RAFT WAL, even when state changes do not occur, to prevent excessive disk usage (#3898)
  • Fix KV accounting errors under heavy concurrent usage (#3900)
  • Ensure new replicas respect MaxAge when a stream is scaled up (#3861)
  • Snapshots would not compact after being applied (#3907)
  • Fix filtered pending state calculation (#3910)
  • Recover from a failed truncate on raft WAL (#3911)
  • Fix JWT claims update if headers are passed (#3918)
  • MQTT
  • Prevent use of wildcard characters with topics beginning with $, per the MQTT spec violation 4.7.2-1 (#3926) (Thank you @dominikh for the report!)

Dependency Updates

  • klauspost/compress - v1.16.0
  • nats-io/nats.go - v1.24.0
  • - v0.6.0
  • - v0.5.0

Complete Changes


March 2, 2023, 5:19 p.m.
Release v2.9.15
Register or login to:
  • 🔍View and search all NATS releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google