v2.14.2

zarazhangrui/frontend-slidesv2.14.2Jun 2, 2026by github-actions[bot]

AI Summary

This release fixes multiple critical issues including race conditions, protocol-level corruption, and JetStream stability improvements. Includes client ID API availability and various JetStream bug fixes.

Key Highlights

  • Client ID now available through embedded API
  • Fixed race condition on subscription interest over routes
  • Fixed protocol-level corruption issues
  • Fixed JetStream Raft peer tracking after inactivity stall
  • Fixed filestore CPU usage with high subject counts

New Features

  • Client ID API
  • Multiple JetStream stability fixes
  • Protocol-level corruption fixes

Full Release Notes

## Changelog

Refer to the [2.14 Upgrade Guide](https://docs.nats.io/release-notes/whats_new/whats_new_214) for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.

### Go Version

- 1.26.3

### Dependencies

- golang.org/x/crypto v0.52.0
- golang.org/x/sys v0.45.0
- github.com/nats-io/jwt/v2 v2.8.2
- github.com/nats-io/nkeys v0.4.16

### Improved

General

- The client ID is now available through the embedded `ClientAuthentication` API (#8217)

### Fixed

General

- A race condition when handling subscription interest over routes has been fixed (#8235)
- Potential protocol-level corruption from rewriting `$JS.ACK` subjects has been fixed (#8242)
- Potential protocol-level corruption from buffer misuse in compressed WebSocket clients has been fixed (#8244)
- The `/accstatz` monitoring endpoint no longer omits accounts with only leaf connections (#8252)

JetStream

- Fixed a case where Raft peers were not correctly tracked after an inactivity stall during catchup (#8226)
- Quorum needed is now calculated correctly when bootstrapping the metalayer when gateway URLs resolve to multiple IP addresses (#8238)
- The filestore no longer performs a block skip check on streams with extremely high subject counts, as it could result in runaway CPU usage (#8227)
- Fixed a case where the filestore would not release a lock after handling a write error (#8232)
- Purge operations on both file and memory stores are now more consistent with each other (#8241)
- Fixed a case where the consumer lock would not release a lock after handling a start sequence error (#8230)
- Counter streams and message schedules now have configuration constraints applied to prevent incorrect usage patterns (#8240)
- Improved stream and consumer scale down behaviour consistency (#8253)
- Fixed an issue where the per-subject state last block was not stored correctly with a max messages per subject limit of 1 (#8254)
- Fixed a drift that could occur in the peer sets after a peer remove of an online node (#8258)

### Complete Changes
 
https://github.com/nats-io/nats-server/compare/v2.14.1...v2.14.2