Changelog
Important
This is a preview release for the upcoming 2.15 series. This is not a formal release candidate and is still undergoing testing, but we would welcome feedback.
This release also contains all changes up to and including v2.14.5.
Go Version
- 1.27.0
Added
JetStream
- Desired state metalayer (#8432, #8437, #8439, #8443, #8452, #8460, #8476)
- 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
- 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_MOVEendpoint
- An in-flight scale/move operation on a stream can be cancelled and the asset returned to its original placement using the new
- Evacuate endpoints (#8443)
- The new
$JS.API.SERVER.EVACUATEendpoint 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
- The new
- Metalayer rescue for disaster recovery (#8408)
- The new
$JS.API.META.RESCUEendpoint 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
- The new
- Stream backup and restore v2 (#7882)
- 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
- 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)
- 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
- Sync changes for replicated streams (#8447)
- When the
sync_intervalis set toalways, 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
- When the
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