v2.15.0
Jeffallan/claude-skillsv2.15.0Sep 17, 2026by github-actions[bot]
Upgrading?
AI Summary
Major NATS Server release improving JetStream reliability with new desired state features and a Go version bump.
Key Highlights
- New desired state metalayer for JetStream
- Evacuate endpoints feature
- Stream backup v2
- Go version bumped to 1.27.1
Breaking Changes
- Streams now have a default limit of 1000 consumers unless specified
- js_raft_delete_range feature enabled by default
New Features
- Desired state metalayer
- Evacuate endpoints
- Stream backup v2
- Domain-prefixed JS API
Full Release Notes
## Changelog Refer to the [2.15 Upgrade Guide](https://docs.nats.io/release-notes/upgrade-to-2.15) for backwards compatibility notes with 2.14.x. This release also contains all changes up to and including [v2.14.7](https://github.com/nats-io/nats-server/releases/tag/v2.14.7). ### Go Version - 1.27.1 (#8551) ### Added JetStream - Desired state metalayer (#8432, #8437, #8439, #8443, #8452, #8460, #8476, #8576, #8598, #8602, #8603) - A new desired state reconciliation engine for streams and consumers considerably improves the safety and reliability of asset moves and scales - Updating the placement or replication factor midway through an existing scale/move operation, cancelling an in-flight scale/move, or peer-removing is now much safer - ADR: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-62.md - Cancel stream move endpoint (#8476) - An in-flight scale/move operation on a stream can be cancelled and the asset returned to its original placement using the new `$JS.API.STREAM.CANCEL_MOVE` endpoint - ADR: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-62.md - Evacuate endpoints (#8443) - The new `$JS.API.SERVER.EVACUATE` endpoint can safely evacuate streams, and any consumers on those streams, from a node - The new `$JS.API.STREAM.PEER.EVACUATE.*` endpoint can safely evacuate a peer, and any consumers on that peer, from a stream - These operations combined allow for maintenance operations with full transfer of data and state without having to peer-remove first - ADR: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-62.md - Metalayer rescue for disaster recovery (#8408) - The new `$JS.API.META.RESCUE` endpoint can temporarily lower the quorum-needed for the metalayer, in order to facilitate the recovery of a system where nodes have been permanently lost and the metalayer cannot reach quorum - ADR: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-61.md - Stream backup and restore v2 (#7882, #8584, #8591, #8604) - A new backup format for stream snapshots which reads out per-message rather than per-block - The new backup format also now correctly includes non-replicated consumers on follower nodes - ADR: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-63.md - Detect source stream recreation (#8384) - The server now detects a source stream being recreated, restarting the sourcing back from the beginning, ensuring new messages are sourced - Stream source indexing (#8282, #8516, #8283) - Restarts and leader changes previously required expensive backward scans through the stream to find the last sourced indices. These are now persisted in an index for instant lookup. - Domain-prefixed JS API in system account (#8429) - When a system account is bridged between the hub and a leaf node, the domain-prefixed JS API can now be used to operate on the leaf node while directly connected to the hub ### Changed JetStream - Streams now have a default limit of 1000 consumers, unless `max_consumers` is specified in the stream config or account limits (#8337, #8566) - Applications planning to use a large number of consumers on a stream should configure `max_consumers` in the stream config or account limits to an appropriately high number - The server-wide default of 1000 can be overridden by setting `default_max_consumers` in the JetStream limits, or can be disabled by setting to `-1` - This limit does not affect existing consumers and will not result in consumer deletions, only the creation of new consumers is prevented - Sync changes for replicated streams (#8447) - When the `sync_interval` is set to `always`, replicated streams now sync their WAL entries but no longer sync upper stream layer writes - The synced log allows the stream to recover safely, but removing unnecessary syncs from the upper stream layer dramatically improves performance - Non-replicated R1 streams are not affected by this change and will continue to sync at the stream layer as normal - The `js_raft_delete_range` feature is now enabled by default (#8520) Leafnodes - The `no_advertise` option no longer includes the hub's own listener address (#8451, contributed by @freakes) ### Improved JetStream - Shorter wait for durable source/mirror consumer resets (#8323) - When using durable consumers for sourcing or mirroring, the heartbeats now short-circuit the recreation backoff - An atomic batch for a single-replica stream run with `sync: always` now syncs messages as a group (#8539, contributed by @RainyPixel) - JetStream source/mirror reply subjects can now opt-in to be domain/account aware (#8586, contributed by @ayushk-1801) MQTT - QOS 1 published into JetStream are pipelined for increased throughput (#8415, contributed by @levb) ### Fixed Leafnodes - Leafnode isolation using `request_isolation`, or with hub-enforced `isolate`, now works correctly across cluster nodes (#8504) ### Complete Changes https://github.com/nats-io/nats-server/compare/v2.14.7...v2.15.0
Related Repositories
public-apis/public-apis★ 491,193
A collective list of free APIs
NousResearch/hermes-agent★ 256,046
The agent that grows with you
yt-dlp/yt-dlp★ 200,217
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,539
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,699
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.