v2.14.7

vadimdemedes/inkv2.14.7Sep 15, 2026by github-actions[bot]

Upgrading?

AI Summary

This release upgrades the Go version to 1.26.8 and replaces the `math/rand` packages with `math/rand/v2`. It adds compatibility for the new desired state metalayer in JetStream and improves performance.

Key Highlights

  • Upgraded Go version to 1.26.8.
  • Replaced `fastrand` and `math/rand` with `math/rand/v2`.
  • Added JetStream compatibility for the new desired state metalayer.
  • Reduced lock contention in event ID tracking and connection handling.

New Features

  • JetStream compatibility for v2.15 desired state metalayer.
  • Improved JetStream performance with aggregated block removals.
  • Enhanced message size checks before expensive header checks.

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.8 (#8551)

### Dependencies

- github.com/antithesishq/antithesis-sdk-go v0.8.0-default-no-op (#8562)
- github.com/klauspost/compress v1.20.0 (#8562)
- golang.org/x/crypto v0.57.0 (#8597)
- golang.org/x/sys v0.48.0 (#8597)
- golang.org/x/time v0.16.0 (#8597)

### Added

JetStream

- Compatibility for the new desired state metalayer, introduced in v2.15, to support safe upgrades and downgrades (#8554)

### Improved

General

- The `fastrand` and `math/rand` packages have been replaced with `math/rand/v2` (#8538, #8557)
- Reduced lock contention that could arise from tracking event IDs or closed connections (#8533)

JetStream

- When syncing deletes from a snapshot, block removals are now aggregated, reducing pending calculations (#8545)
- Message size checks are now performed before more expensive header checks (#8561)
- Pending calculations are now considerably faster when the max messages per subject limit is 1 (#8567)

### Fixed

General

- The `{{left}}` and `{{right}}` mapping functions now work correctly in account mappings and source/mirror transforms (#8568)

JetStream

- A potential underflow when calculating deletes in skip messages has been fixed (#8546)
- Fixed an issue where catchup signals to the metalayer are blocked, which could stall stream or cluster management operations until the node is restarted (#8555)
- Consumer removal is now handled correctly after a recreate during metalayer recovery at startup (#8556)
- Fixed a potential panic that could happen when filestore block caches were released during message removal (#8548)
- The last dedupe message ID is now restored correctly if the last message was outside of the window after restart (#8564)
- An unreachable send snapshot condition has been removed from the stream monitor (#8565)
- Pull request expiry is now counted as activity when `inactive_threshold` is set (#8575)
- Purges and roll-ups on multi-filter subject consumers will no longer advance past unrelated subjects (#8572)
- Filestore compression header checking is now extended to check for compatible compression values and for the presence of correct or incorrect first record checksums, avoiding collisions at the beginning of a message block (#8581)
- JetStream usage from peer-removed nodes is now removed from the remaining cluster node accounting correctly (#8570)
- Fixed a data race between deduplication tracking and stream config updates (#8598)
- Fixed a potential nil consumer info when responding to consumer reset requests (#8598)
- Stream catchups will no longer run for removed or re-synced peers (#8598)
- Fixed a race condition that could leave ghost consumer assignments when deleting consumers (#8598)
- Pausing a consumer with pending changes no longer cancels out the in-flight assignment (#8598)
- Stepping down a consumer leader with pending changes no longer fails (#8598)
- Switching a stream to interest retention policy with no consumers now correctly cleans up messages with no interest (#8598)
- Fixed an issue where removed consumers were incorrectly matched without checking the group name (#8598)
- A number of stream and consumer endpoints will no longer report the wrong state based on in-flight proposals (#8598)

### Complete Changes
 
https://github.com/nats-io/nats-server/compare/v2.14.6...v2.14.7

Related Repositories