Releases: nats-io/nats-server
Release v2.10.17-RC.6
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Includes everything in v2.10.17-RC.5.
Go Version
- 1.22.4
Improved
JetStream
- Increased filestore block and per-subject info cache expiry times to help improve performance on sparse streams (#5568)
Fixed
Accounts
JetStream
- Ensure that internal system clients used by Raft groups are always cleaned up correctly, fixing a potential memory leak (#5566)
Complete Changes
Release v2.10.17-RC.5
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Includes everything in v2.10.17-RC.4.
Go Version
- 1.22.4
Improved
JetStream
- No longer retrieve the WAL state unnecessarily when installing Raft snapshots (#5552)
Fixed
JetStream
- Audit streams for
$JS.EVENT.>
,$SYS.ACCOUNT.>
can now be created again, fixing a regression in RC.4 (#5556) - Potential race condition when cleaning up Raft snapshots has been resolved (#5558)
Complete Changes
Release v2.10.17-RC.4
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Includes everything in v2.10.17-RC.3.
Go Version
- 1.22.4
Dependencies
Added
Monitoring
- Experimental
/raftz
monitoring endpoint for retrieving internal Raft group state for diagnostic purposes (#5530)
Improved
JetStream
- Ensure ack processing is consistent and correct between leader and followers for replicated consumers (#5524)
- Use per-subject info to speed up load-last filestore operations with wildcard filters (#5546)
- Populate missing per-subject info after skipping blocks when calculating filtered pending (#5545)
- Reduced time taken to process consumer deletes when there is a large gap between the consumer ack floor and the stream last sequence (#5547)
Fixed
JetStream
- Follower stores no longer inherit the redelivered consumer delivered sequence which could break ack gap fill (#5533)
- Direct Raft proposals will no longer bypass the internal proposal queue which could cause incorrect interleaving of state (#5543)
- Audit streams that capture
$JS
,$JS.API
,$JSC
and$SYS
subjects are now only allowed ifNoAck
is set, avoiding potential misconfiguration that could affect the JetStream API (#5548) - Streams from failed snapshot restores are now cleaned up correctly, fixing potential false positive warnings on
/healthz
after a failed restore (#5549)
Monitoring
- Ensure consistency of the delivered stream sequence in
/jsz
filtered consumer reporting (#5528)
Complete Changes
Release v2.10.17-RC.3
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Includes everything in v2.10.17-RC.2.
Go Version
- 1.22.4
Improved
Core
- Reorder struct fields in stree for improved memory alignment (#5517)
JetStream
- Reset election timer when leaving observer mode enabling quicker leadership hand-off (#5516)
Fixed
Leafnodes
- Prevent potential message duplication for queue-group subscriptions (#5519) Thanks to @pcsegal for the report!
JetStream
- Fix accounting for consumers with a different replication factor than the parent stream (#5521)
- Fix potential segfault if
mset.mirror
was nil when calculating the last load message (#5522)
Chore
Jetstream
- Added additional memory-based Raft tests (#5515)
Complete Changes
Release v2.10.17-RC.2
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Includes everything in v2.10.17-RC.1.
Go Version
- 1.22.4
Dependencies
- golang.org/x/sys v0.21.0 (#5508)
- golang.org/x/crypto v0.24.0 (#5509)
Improved
JetStream
- Improve leadership change signaling (#5504, #5505)
- Memory-based stream behavior during server restarts (#5506)
Fixed
Accounts
- Import/export cycle detection (#5494) Thanks to @semakasyrok for the contribution!
JetStream
- Fix last sequence stream reset on server restart (#5497)
- Fix data between creating a consumer and determining cluster state (#5501)
- Prevent interleaving of setting/unsetting observer states (#5503)
Complete Changes
Release v2.10.17-RC.1
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.22.4 (#5487)
Improved
JetStream
- Improve performance of calculating num-pending and interest state of a stream (#5476)
Monitoring
- Rate-limit statsz updates which reduces load for very large clusters (#5470, #5485) Thanks to @wjordan for the report and contribution!
Fixed
JetStream
- Avoid panic on corrupted TAV file (#5464)
- Performance regression in
LoadNextMsg
with very sparse or no messages (#5475) - Stepdown candidate when append-entry is ahead of last log term (#5481)
- Fix possible redelivery after successful ack during rollout restarts (#5482)
- Fix returning maximum consumers limit reached on some consumer updates (#5489)
Chores
Config
- Clarify comment on re-use of config
Options
type for embedded mode (#5472) Thanks to @robinkb for the report and contribution!
Complete Changes
Release v2.10.16
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Warning
A possible regression may result in a server panic at startup when tav.idx
files were incorrectly truncated down to zero bytes. You can work around this problem by deleting tav.idx
files that are zero bytes in length before starting the server. Zero-byte files could exist as a result of a previous server crash before a successful file sync to disk occurred.
Go Version
- 1.22.3 (#5438)
Dependencies
- github.com/nats-io/jwt/v2 v2.5.6 (#5328)
- golang.org/x/sys v0.20.0 (#5388)
- golang.org/x/crypto v0.23.0 (#5413)
Added
- Added Left and Right subject mapping operations (#5337) Thanks to @sspates for the contribution!
- Add a
/expvarz
monitoring endpoint (#5374)
Improved
Accounts
- Change
AccountResolver()
to use read lock to prevent contention (#5351) - Improve muxed routes with large subject space (#5399)
Gateway
JetStream
- Optimize stream subject matching implementation (#5316, #5324, #5329, #5342, #5353)
- Improve filestore LoadNextMsg performance (#5401)
- Prevent blocking writes on meta state filestore flush (#5333)
- Add logging to measure
writeFullState
andenforceMsgPerSubjectLimit
(#5340) - Do not hold filestore lock on msg block loads when looking up the first sequence for subject (#5363)
- Improve various stream sourcing and mirror behaviors and performance (#5366, #5372, #5379, #5389)
- Increase the compression threshold for Raft traffic (#5371)
- Put a maximum idle flush time for the filestore (#5370)
- Updated subject state expiration (#5377)
- Simplify writing the full state to index.db (#5378)
- Added in separate last subject timestamp to track access (#5380)
- Check consumer leader status without locks (#5386)
- Various Raft improvements with limited to no state (#5427)
- Improved consumer with AckAll performance of first ack with large first stream sequence (#5446)
- Various stream catchup improvements (#5454)
WebSocket
- Improve generating INFO data to send to clients (#5405)
Fixed
Config
JetStream
- Fix potential deadlock if a panic occurs during
calculateSyncRequest
(#5321) - Fix corner cases of subject matching (#5318, #5339) Thanks to @mihaitodor for the report!
- Prevent stepping down for old election terms (#5314)
- Prevent WAL truncation during catch-up until after peerstate/snapshot check (#5330)
- Fix various delivery counter logic (#5338, #5361)
- Reset election timeout only on granted vote request (#5315)
- Ensure stream catchup syncs after server crash and restart (#5362)
- Prevent race condition for mirroring a consumer (#5369)
- Ensure messages are removed after consumer updates occur on interest-based streams (#5384) Thanks to @MauriceVanVeen for the report and contribution!
- Cleanup messages on interest stream after consumer interest changes (#5385) Thanks to @tyler-eon for the report and @MauriceVanVeen for the contribution!
- Fix potential redelivery of acked messages during server restarts (#5419)
- Hold onto tombstones for previous blocks on compact (#5426)
- Fixes for rescaling streams with sources (#5428)
WebSocket
- Fix data races during shutdown (#5398)
Chores
Complete Changes
Release v2.11.0-preview.2
Changelog
Note: this preview release incorporates the cumulative changes in the 2.10.x series since version 2.10.12.
Go Version
- 1.22.2 (#5300)
Added
TLS
- Add CA search functionality for the Windows cert store (#5115)
JetStream
- Add TPM-driven filestore encryption for Windows (#5273)
- Support
StartTime
for get/direct message requests (#5158)
Monitoring
- Add logical account name to
accstatz
endpoint (#5173)
MQTT
- Add Sparkplug B compatibility (#5150)
WebSocket
- Support custom response headers in configuration (#5230) Thanks to @ramonberrutti for the contribution and @mcosta74 for the proposal!
Fixed
JetStream
- Fix consumer resume on empty/zero
PauseUntil
value (#5164) Thanks to @MauriceVanVeen for the contribution!
Complete Changes
Release v2.10.14
Changelog
(Note there was no 2.10.13 version 🙂)
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.21.9 (#5300)
Dependencies
Improved
Auth
- Improve clone behavior to prevent unintended references (#5246) Thanks to Trail Of Bits for the report!
- Apply constant-time evaluation of non-bcrypt passwords (#5247) Thanks to Trail Of Bits for the report!
JetStream
- Reduce lock contention when looking up stream metadata (#5223)
- Optimize matching a subject when applying per subject message limits (#5228)
- Optimize waiting queue for pull consumers to reduce excessive memory and GC pressure (#5233)
- Improve error handling in filestore to prevent duplicate nonces being used and ignored errors (#5248) Thanks to Trail Of Bits for the report!
- Improve interest and workqueue state tracking to prevent stranded messages during concurrent consumer acks and stream deletes (#5270)
- Introduce store method to push down and optimize multi-filter subject matching used by consumers (#5274) Thanks to @svenfoo for the report!
- Various improvements and fixes for clustered interest-based streams and associated consumers (#5287)
- Return errors and/or adding logging for rare filestore conditions (#5298)
- When explicitly syncing to the filesystem, hold the message block lock to prevent possible downstream corruption (#5301, #5303)
Fixed
OS
- Fix for race checkptr panic on macOS/Darwin on Go 1.22 (#5265)
Connections
- Address possible memory leak due to connections not be released (#5244) Thanks to @davidzhao for the report!
JetStream
- Fix incorrect subject overlapping checks that could lead to multiple consumers or streams bound to the same subjects (#5224)
- Improve situations that could result in orphan messages in streams (#5227)
- Protect against corrupt message block when doing indexing (#5238) Thanks to @kylemcc for the report!
- Fix consumer config check of max deliver when backoff is set (#5242)
- Ignore Nats-Expected-* headers from source stream (#5256) Thanks to @ramonberrutti for the report and contribution!
- Add missing check that could result an extended purge or compact to fail in memory-based streams (#5264)
- Fix issue that could result in skipping valid messages when loading them from the filestore (#5266)
- Use cluster-scoped lock when processing a leader change (#5267)
- Fix missing unlocks in filestore and streams in certain error conditions (#5276) Thanks to Trail Of Bits for the report!
- Ensure lock is held for the duration of a filestore truncate (#5279)
- Fix race condition when checking for the stream interest state (#5290)
- Ensure dangling NRG directories are cleaned up when the in-memory stream/consumer are deleted (#5291)
- Perform a standard stream purge when ack floor is higher than the last known state (#5293)
- Handle concurrent creation of workqueue consumers that could result in overlapping interest (#5295) Thanks to @LautaroJayat for the report!
- Fix possible case of multiple deliveries of the same message that cause the delivery count decreasing (#5305)
Monitoring
- Fix JSZ account filtering behavior when requesting stream details (#5229)
OCSP
- Fix stapling during gateway reconnect and configuration reload (#5208)
Chores
- Fix incorrect function names in comments (#5237, #5289) Thanks to @depthlending and @needsure for the contributions!
- Improve workqueue stream sourcing tests (#5112)
- Speed-up tests and fixup lint reports (#5258)
- Improve hardened systemd configuration example (#5272)
- Refactor LoadNextMsgMulti store tests to guard against drift (#5275, #5277)
- Rename orphan messages and replicas test cases (#5292)
Complete Changes
Release v2.10.12
Changelog
Refer to the 2.10 Upgrade Guide for backwards compatibility notes with 2.9.x.
Go Version
- 1.21.8 (#5175)
Dependencies
- github.com/klauspost/compress v1.17.7 (#5129)
- github.com/nats-io/nats.go v1.33.1 (#5104)
- golang.org/x/crypto v0.21.0 (#5199)
- golang.org/x/sys v0.18.0 (#5198)
- github.com/nats-io/jwt/v2 v2.5.5
Improved
General
- Optimize detecting long subjects with wildcards (#5102)
- Refactor
getHeader
to improve bounds checking (#5135)
JetStream
- Switch to use
fmt.Appendf
to reduce a few allocations (#5100) - Write Raft peer state and term/vote inline (#5151, #5178)
- Improve term management when handling Raft vote responses (#5149)
- Ensure Raft applied index is only updated by upper layer (#5152)
- Add I/O gate for message block
writeAt
syscall (#5193) - Lower the minimum expiry threshold to 250ms (#5206)
Fixed
General
- Fix randomisation for queue subscriptions on 32-bit platforms which could cause a panic (#5169) Thanks to @jeremylowery for the report!
- Stree not matching when partial parts were compared to long fragments (#5177)
Gateway
- Fix sending empty reply on gateway RMSG (#5192) Thanks to @n-holmstedt for the report!
Leafnodes
- Fix loop detection on daisy-chained leafnodes (#5126)
- Make sure to not remove account mappings that just had their value changed (#5132, #5103)
JetStream
- Fix sending
Consumer Deleted
on peer remove (#5111, #5160) - Fix memory leak during compaction within memory store (#5116) Thanks to @stefanLeo for the report and contribution!
- Updating consumer config fails to check
OptStartTime
properly (#5127) Thanks to @thed0ct0r for the contribution! - Slow ack for snapshots could cause slow consumer and client disconnect (#5144)
- Fix for a test flapper with consumer expire frequency change (#5155)
- Fix a potential drift that could occur when assigning last sequences to published messages on clustered streams (#5179)
- Fix data race when capturing last sequence on clustered streams (#5182)
- Fix lock inversion when tracking last sequence failures on clustered streams (#5183)
- Revert an earlier change around the Raft handling of stepdowns due to stream move performance (#5200)
- Make sure not to commit a replicated ack when the consumer is closed (#5196)
- Check the Raft layer stream state once recovery is complete (#5196)
OCSP
- Prefer a POST method to the OCSP server, falling back to GET (#5109)
- Fixed a race condition that could affect OCSP stapling during server reloads (#5207)