Changelog
Refer to the 2.15 Upgrade Guide for backwards compatibility notes with 2.14.x.
Go Version
- 1.27.1
Improved
JetStream
- Fast batch publish now reports backward sequence gaps as well as forward gaps (#8699)
- Stream pending message calculations avoid unnecessary filestore cache access and handle deleted sequence ranges more efficiently (#8680, #8681)
- Stream restore format detection now stops after the first S2 chunk (#8693)
- Stream restore waits for the preferred node to become leader, avoiding an incorrect create response during clustered restore (#8690)
- Memory backed streams avoid copying message headers and bodies twice when storing messages (#8652)
Monitoring
- Leafz now reports whether a leafnode connection uses WebSockets (#8683)
MQTT
- Partial packets are no longer copied in full on every read, reducing allocations and buffer copying (#8692)
Fixed
General
- Fixed several data races affecting service imports and exports during configuration reloads and account updates (#8675)
- Per-account routes no longer double count inbound account message and byte statistics (#8677)
- TLS certificate pin validation now checks the correct pins after a configuration reload (#8679)
- Auth callout rejections are now reported as authentication errors instead of account connection limit errors (#8688)
- Scoped
ProxyRequiredsettings are now respected in JWTs and auth callouts (#8694) - Subscription interest notifications are no longer missed when a subscription is added or removed concurrently (#8703)
- Fast batch ping no longer starts a new batch incorrectly (#8714)
Leafnodes
- TLS state is now available to auth callouts when leafnodes connect over WebSockets (#8686)
- Leafnode clients are now shed alongside regular clients during lame duck shutdown, avoiding a thundering herd (#8695)
- Remote proxies now support TLS with
https://proxy URLs and an optional proxytlsblock (#8701) - Remote proxies no longer incorrectly warn that
nats://URLs are unsupported or lose the hub's initialINFOmessage (#8701) - Remote proxy options are now rejected when no proxy URL is specified (#8701)
JetStream
- Fixed membership change, learner scale-up and metalayer commit recovery issues (#8672)
- Fixed migration and R1 scale-up issues that could delete a running store or lose writes (#8673)
- Recreated streams with renamed Raft groups now start their monitors correctly (#8673)
- Consumers are no longer moved to new stream peers before those peers hold the stream data (#8678)
- Failed clustered stream restores now clean up correctly without deleting a subsequently recreated stream or losing a
stream rmresponse (#8702) - Fixed a panic when shutting down a clustered JetStream server immediately after startup (#8707)
- Idempotent stream create requests with sources no longer time out after leader changes (#8703)
- Interest cleanup no longer compacts a stream past its last sequence during recovery (#8710)
MQTT
- MQTT packet lengths are validated earlier against
max_payload, and non-QoS 2PUBRECpackets are handled correctly (#8692)