Changelog
Refer to the 2.14 Upgrade Guide for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.
Go Version
- 1.26.8
Changed
Gateways
- Support for sending and handling the legacy
$GR.reply prefix, used by servers prior to v2.1.2, has been removed (#8615)
Improved
JetStream
- Stalled source and mirror flow control is now reported in stream info and warning logs, making missing
$JS.FC.>imports or exports easier to diagnose (#8633) - Stream and consumer placement now prefers peers that have caught up with the metalayer, reducing delays in API responses (#8643)
- Improved the performance of deleting entries from and encoding AVL sequence sets (#8646)
Fixed
General
- Concurrent account JWT updates no longer invalidate stream imports and interrupt message delivery (#8610)
- Configuration reloads no longer incorrectly disconnect operator mode clients that send an
nkey(#8609) Connzrequests selecting a connection bycidnow correctly apply account, user and MQTT client ID filters (#8613)- Pipelined client operations are no longer processed after a connection is rejected for exceeding the account's
max_connectionslimit (#8614) - Queue subscription deny permissions are now checked against the mapped delivery subject (#8616)
- Outstanding reply permissions are now preserved when inherited account permissions are refreshed without changing the response policy (#8620, contributed by @0xasritha)
- Subscription deny filters are now rebuilt atomically when inherited account permissions are refreshed, preventing a window in which denied messages could be delivered (#8622, contributed by @0xasritha)
- Unquoted configuration values beginning with a number and a size or exponent suffix, such as
0K1abc, are now correctly parsed as strings (#8263, contributed by @koriyoshi2041) - Account JWT updates now reject invalid subject mappings instead of reporting success, and failed replacements no longer remove existing mappings (#8627, contributed by @vulragrag-star)
- Cached subscription results are now cleared when an already connected client sends another
CONNECT, preventing stale results from being reused after an account change (#8641, reported by @Tan-JunWei)
JetStream
- Stream scale-down requests are now rejected when the target replica count has no configured account tier (#8608)
- Stale per-message TTL entries are now removed when their messages have already been deleted, avoiding repeated expiry scans and excess CPU and memory usage (#8595, contributed by @digitalstraw)
- The maximum deliveries exceeded advisory is now sent correctly when a consumer's
max_deliveris lowered below a message's existing delivery count (#8605, contributed by @zeke-lin) - The consumer created time is now preserved after recovery (#8621)
- Filestore compaction now respects the configured sync settings when replacing a message block (#8629)
- Fixed a race during filestore compaction that could cause consumers to skip messages or lose redelivery tracking (#8623, contributed by @as-clearview)
- Concurrent updates to R1 consumers no longer lose API responses (#8628)
- Stream and consumer create and delete requests received during metalayer catchup now receive responses once catchup completes (#8643)
- R1 consumer create requests no longer lose their responses when the consumer is deleted immediately afterwards (#8643)
- Fixed a data race when handling consumer leader stepdown requests (#8647)
- Fixed a memory leak affecting pull requests and direct gets after a configuration reload when the system account is explicitly configured in the
accountsblock (#8650, contributed by @1995parham)
Leafnodes
- Publish permissions are now checked against the transformed subject sent over the leafnode connection, avoiding the need to also allow the original stream import subject (#8530, contributed by @fbarth-ifr)
- Fixed incorrect pending byte accounting after a partial compressed write that could stall a leafnode connection and prevent it from reconnecting (#8636)
- Closed leafnode connections are now correctly removed from the account's leafnode list, reducing retained memory and garbage collection pressure (#8637)
Gateways
- The legacy
$GR.reply prefix is now reserved on client ingress, preventing clients from publishing to gateway reply subjects using that prefix (#8615)
MQTT
- Config load no longer breaks QoS1/QoS2 delivery when
max_ack_pendingis unset (#8671)