v2.11.9
nats-io/nats-serverv2.11.9Sep 9, 2025by github-actions[bot]
AI Summary
This is a patch release (v2.11.9) focused on bug fixes, stability improvements, and dependency updates. Key improvements include JetStream offline assets support for future 2.12 compatibility, multiple race condition fixes, and enhanced monitoring endpoints. The Go version was updated to 1.24.7 along with updated dependencies.
Key Highlights
- JetStream offline assets support - protects data when downgrading from future 2.12 server
- Multiple race condition fixes in JetStream consumer/stream creation and Raft leadership
- Leaf node subject interest propagation fixes for daisy chaining and spoke topologies
- Enhanced monitoring endpoints now return leader_since, system_account, and traffic_account
- Go version updated to 1.24.7 with updated dependencies
New Features
- Offline assets support for JetStream - reports streams/consumers as offline when incompatible with future 2.12 features
- raftz endpoint now reports cluster traffic account
- Stream info and consumer info endpoints now return leader_since field
- Stream info, consumer info, and jsz monitoring endpoints now return system_account and traffic_account fields
Full Release Notes
## Changelog Refer to the [2.11 Upgrade Guide](https://docs.nats.io/release-notes/whats_new/whats_new_211) for backwards compatibility notes with 2.10.x. ### Go Version - 1.24.7 (#7273) ### Dependencies - golang.org/x/time v0.13.0 (#7273) - golang.org/x/sys v0.36.0 (#7273) ### Improved JetStream - Offline assets support (#7158) - Server version 2.12 will introduce new features that would otherwise break a 2.11 server after a downgrade. The server now reports the streams/consumers as offline and unsupported, keeping the data safe, but allowing to either delete the asset or upgrade back to the supported version without changes to the data itself. - The `raftz` endpoint now reports the cluster traffic account (#7186) - The stream info and consumer info endpoints now return `leader_since` (#7189) - The stream info and consumer info endpoints now return `system_account` and `traffic_account` (#7193) - The `jsz` monitoring endpoint now returns `system_account` and `traffic_account` (#7193) ### Fixed General - Fix a panic that could happen at startup if building from source using non-Git version control (#7178) - Fix an issue where issuing an account JWT update with a connection limit could cause older clients to be disconnected instead of newer ones (#7181, #7185) - Route connections with invalid credentials will no longer rapidly reconnect (#7200) - Allow a `default_sentinel` JWT from a scoped signing key instead of requiring it to solely be a bearer token for auth callout (#7217) - Subject interest would not always be propagated for leaf nodes when daisy chaining imports/exports (#7255) - Subject interest would sometimes be lost if the leaf node is a spoke (#7259) - Lowering the max connections limit should no longer result in streams losing interest (#7258) JetStream - The `Nats-TTL` header will now be correct if the subject delete marker TTL overwrites it (#7177) - In operator mode, the `cluster_traffic` state for an account is now restored correctly when enabling JetStream at startup (#7191) - A potential data race during a consumer create or update when reading its paused state has been fixed (#7201) - A race condition that could allow creating a consumer with more replicas than the stream has been fixed (#7202) - A race condition that could allow creating the same stream with different configurations has been fixed (#7210, #7212) - Raft will now correctly reject delayed entries from an old leader when catching up in the meantime (#7209, #7239) - Raft will now also limit the amount of cached in-memory entries as the leader, avoiding excessive memory usage (#7233) - A potential race condition delaying shutdown if a stream/consumer monitor goroutine was not started (#7211) - A benign underflow when using an infinite (-1) MaxDeliver for consumers (#7216) - A potential panic to send a leader elected advisory when shutting down before completing startup (#7246) - Stopping a stream should no longer wait indefinitely if the consumer monitor goroutine wasn’t stopped (#7249) - Speed up stream mirroring and sourcing after a leaf node reconnects in complex topologies (#7265) - Updating a stream with an empty placement will no longer incorrectly trigger a stream move (#7222) Tests - Tests have been improved (#7172, #7230, #7213, #7248) ### Complete Changes https://github.com/nats-io/nats-server/compare/v2.11.8...v2.11.9