Skip to content

Release v2.10.2

Compare
Choose a tag to compare
@NATS-CI NATS-CI released this 06 Oct 20:52
· 1506 commits to main since this release
203c4b9

Changelog

Downgrade compatibility note

2.10.x brings on-disk storage changes which bring significant performance improvements. Upgrade existing server versions will handle the new storage format transparently. However, if a downgrade from 2.10.x occurs, the old version will not understand the format on disk with the exception 2.9.22 and any subsequent patch releases for 2.9. So if you upgrade from 2.9.x to 2.10.0 and then need to downgrade for some reason, it must be back to 2.9.22+ to ensure the stream data can be read correctly.

Go Version

  • 1.21.2

Dependencies

  • github.com/nats-io/nats.go v1.30.2

Added

Profiling

  • Add prof_block_rate config option for configuring the block profile (#4587)
  • Add more pprof labels to consumers, sources, and mirrors (#4609)

Improved

Core

  • Reduce contention when pattern matching subjects when the sublist cache is disabled (#4586)
  • Various service import reply optimizations (#4591)
  • Remove unnecessary lock on subscription list if cache is disabled (#4594)

Docs

  • Fix links in various repo markdown files (#4590) Thanks to @jdhenke for the contribution!

Leafnodes

  • Set S2 writer concurrency to 1 rather than the default of GOMAXPROCS to improve performance (#4570)

JetStream

  • Make install snapshot errors rate limited when catching up (#4574)
  • Log a warning on reset if bad stream state is detected (#4583)
  • Change some contended locks to atomic swap operations (#4585)
  • Log a warning if filestore recovery fails on the happy path (#4599)
  • Ensure concurrent stream of the same stream does not return not found (#4600)
  • Add additional markers for indicating unflushed state (#4601)
  • Log a warning when subject skew is detected in the filestore (#4606)
  • Reduce contention for a high number of connections in JetStream enabled account (#4613)
  • Reduce contention in the consumer info API (#4615)
  • Reduce contention and increase throughput of replica synchronization (#4621)

Systemd

  • Update systemd scripts to use SIGUSR2 (lame duck model) for shutdown (#4603)

WebSocket

  • Minimize memory growth for compressed WebSocket connections (#4620)
  • Significantly reduce allocations in WebSocket interface (#4623)

Fixed

Accounts

  • Fix inversion of lock on startup when setting up the account resolver (#4588)
  • Prevent bypassing authorization block when enabling system account access in accounts block (#4605) Thanks to @alexherington for the report!

Leafnodes

  • Prevent a leafnode cluster from receiving a message multiple times in a queue subscription (#4578) Thanks to @pcsegal for the report!

JetStream

  • Fix possible panic due to message block unlock occurring prematurely (#4571)
  • Guard against an accounting error resulting in a negative message count (#4575)
  • Skip enabling direct gets if no commits (#4576)
  • In lame duck mode, shutdown JetStream at the start to signal transfer of leadership if the leader (#4579)
  • Fix possible stream assignment race condition (#4589)
  • Fix race condition during leader failover scenarios resulting in potential duplicate messages being sourced (#4592)
  • Respond with “not found” for consumer info if consumer is closed (#4610)
  • Prevent processing of consumer assignments after JetStream shutdown occurs (#4625)
  • Fix possibly lookup misses when MaxMsgsPerSubject=1 leading to excess messages in stream (#4631)

MQTT

  • Fix PUBREL header incompatibility (#4616)

Routes

  • Fix potential of pinned accounts not establishing a route on connect (#4602)

Complete Changes

v2.10.1...v2.10.2