Releases: nats-io/nats-server
Releases · nats-io/nats-server
Release v2.9.17
Changelog
Go Version
- 1.19.9
Dependency Updates
- github.com/klauspost/compress v1.16.5 (#4088)
Improved
Core
- Additional optimizations to outbound queues, reducing memory footprint (#4084, #4093, #4139)
- Use faster flate compression library for WebSocket transport compression (#4087)
Leafnodes
Monitoring
- Support sorting by RTT for /connz (#4157)
Resolver
- Improve signaling for missing account lookups (#4151)
JetStream
- Optimized determining if a stream snapshot is required (#4074)
- Run periodic check for consumer “ack floor” drift on leader (#4086)
- Optimize leadership transfer during a stream migration (#4104)
- Improve how clustered consumer state is hydrated on startup (#4107)
- Add operation type to panic messages for improved debugging (#4108)
- Improve health check to repair stalled assets periodically (#4116, #4172)
- Remove unnecessary filestore lock to improve I/O performance (#4123)
- Various Raft leadership improvements (#4126, #4142, #4143, #4145)
- Improve accuracy of account usage (#4131)
- Clean up old Raft groups when streams are reset (#4177)
Fixed
General
- Fix various names in comments (#4099) Thanks to @cuishuang for the contribution!
- Fix various typos in comments (#4169) Thanks to @savion1024 for the contribution!
- Update tests to reflect the
server.Start()call no longer blocks (#4111) Thanks to @lheiskan for reporting the issue! - Fix race condition in config reload with gateway sublist check (#4127)
- Track all remote servers in a NATS system with different domains (#4159)
Core
- Fix premature closing in WebSocket transport due to outbound queue changes (#4084)
- Fix subscription interest for config-based accounts during config reload (#4130)
- Use monotonic time for measuring durations internally (#4132, #4154, #4163)
Monitoring
- Service import reporting for /accountz when mapping to local subjects (#4158)
JetStream
- Fix formatting of Raft debug log (#4090)
- Prevent failure of /healthz in single server mode on failed snapshot restore (#4100)
- Ensure a stream Raft node has fully stopped and resources freed (#4118)
- Fix case where R1 streams are orphaned and can’t scale up (#4146)
- Protect against out of bounds access on usage updates (#4164)
- Fix state rebuild where the first block is truncated and missing index info (#4166)
- Avoid stale KV reads on server restarted for replicated stores (#4171) Thanks to @yixinin for reporting the issue!
- Prevent deadlock with usage report for accounts (#4176)
Complete Changes
Release v2.9.16
Changelog
Go Version
- 1.19.8
Dependency Updates
- github.com/klauspost/compress v1.16.4
- github.com/nats-io/jwt/v2 v2.4.1
- github.com/nats-io/nkeys v0.4.4
- golang.org/x/crypto v0.8.0
- golang.org/x/sys v0.7.0
Added
Build
- Nightly build of the “main” branch as a Docker image: synadia/nats-server:nightly-main (#3961, #3962, #3963, #3972, #4019, #4063)
- Version control SHA in the Goreleaser build of the server (#3993). Thanks for the report @jzhoucliqr!
Monitoring - Add server name and route remote server name to /routez (#4054)
Resolver
- Add “hard_delete” option for stored JWTs (#3783). Thanks for the contribution @JulienVdG!
Improved
JetStream
- Storage and Raft layer improvements to decrease p99 latency variance and memory pressure in high load environments (#3956, #3952, #3965, #3981, #3999, #4018, #4020, #4021, #4022, #4026, #4027, #4028, #4029, #4030, #4038, #4045, #4050, #4053)
- Don’t show Raft warning for node that is closed (#3968)
- Use pooled buffer for flushing encrypted message blocks (#3975)
- Remove snapshotting of cores and maxprocs (#3979)
- Improvements to interest-based streams to optimize when messages are deleted (#4006, #4007, #4012)
- Better handling of concurrent stream and consumer creation of the same name (#4013)
- Finer-grain locking during asset checking to reduce contention in the /healthz endpoint (#4031)
- Encrypted file stores will now limit block sizes to improve performance (#4046)
- Improve performance on storing messages with varying subjects and limits are imposed (#4048, #4057). Thanks for the report @kung-foo!
Fixed
Subjects
- Ensure subjects containing percent (%) are escaped (#4040)
Accounts
- Fix data race when setting up service import subscriptions (#4068)
Leaf
- Fix leaf client connection failing on OCSP setups (#3964)
- Fix case when allow/deny permissions on leaf connection could block legitimate interest (#4032)
Cluster
- Route disconnect not detected by ping/pong (#4016). Thanks for the contribution @sandykellagher!
JetStream
- Pull consumer not sending timeout error to clients for expired requests (#3942)
- Prevent meta leader deadlock during deletion of orphaned streams during server startup (#3945)
- Clear ack’ed messages when scaling workqueue or interest-based streams (#3960) Thanks for the report @Kaarel!
- Remove messages from interest-based stream on consumer snapshot (#3970)
- Fix potential panic in message block buffer pool (#3978)
- Fixed an issue with consumer states growing and causing instability (#3980)
- Improve handling of out-of-storage condition (#3985)
- Address memory leak of unreachable Raft groups when JetStream becomes disabled (#3986)
- Prevent Raft leader from being placed on server in lame-duck mode (#4002)
- Remove potential race condition on sysRequest (#4017)
- Fix FirstSeq not being updated with filestore when purging subject (#4041). Thanks for the contribution @MauriceVanVeen!
- Fix Raft log debug reloading (#4047)
- Ensure consumer recovers fully on restart before being eligible for leader (#4049)
- Fix incorrect check between stream source/mirror with external streams (#4052)
- Fix various conditions during Raft group recovery (#4056, #4058)
Complete Changes
Release v2.9.15
Changelog
Go Version
- 1.19.6: Both the release executables and Docker images are built with this Go release
Added
- Monitoring
Changed
- Lower default value of
jetstream.max_outstanding_catchupto prevent slow consumers between routes (#3922)- Note: The new value is now 64MB from 128MB. This is better optimized for 1 Gbit links, however if your links are 10 Gbit or higher, this value can be set back to 128MB if slow consumers were not previously observed.
Improved
- Refactor intra-process queue to reduce allocations (#3894)
- JetStream
- Better system stability and recovery from corrupt metadata due to hard forced restarts (#3934)
- Optimize on-disk, per-subject info update (#3867)
- Limit concurrent blocking IO to improve stability under heavy IO loads (#3867)
- Improve message expiry calculation for large numbers of messages (#3867)
- Optimize when and how consumer num pending is calculated, significantly speeding up consumer info requests (#3877)
- Improve parallel consumer creation to prevent dropped messages (#3880)
- Properly warn on consumer state update state failures (#3892)
- Performance of consumer creation for certain configurations (#3901)
- Send current snapshot to followers when becoming meta-leader (#3904)
- Ensure preferred peer during stepdown is healthy (#3905)
- Optimized various store calls on stream state (#3910)
- Various performance and stability under heavy IO loads (#3922) (Thank you @matkam and @davidzhao for the report and the test harness!)
Fixed
- Fix stack overflow panic in reverse entry check when inbox ends with wildcard (#3862)
- Check if client connection name was already set when storing, preventing recursive memory growth (#3886)
- Fix check for count of wildcard tokens in “partition” subject transform (#3887) (Thank you @MauriceVanVeen for the contribution!)
- Fix panic if service export is nil (#3917) (Thank you @MauriceVanVeen for the report!)
- JetStream
- Ensure per-subject info is updated when doing stream compact (#3860)
- Ensure account usage is updated in the filestore when extended version purge occurs (#3876)
- Prevent consumer deletes on restart, with non-fatal errors (#3881)
- Do not warn if consumer replicas is zero since it will be inherited from the stream (#3882)
- Named push consumers with inactive thresholds deleted when still active (#3884)
- Prevent spurious “Error storing entry to WAL” log messages (#3893, #3891)
- Clean up consumer redelivery state on stream purge (#3892)
- Clean up consumer ack pending if below stream ack floor (#3892)
- Update ack floors on messages being expired (#3892)
- Fix lost ack pending consumer state on partial stream purge (#3892)
- Snapshot and compact the consumer RAFT WAL, even when state changes do not occur, to prevent excessive disk usage (#3898)
- Fix KV accounting errors under heavy concurrent usage (#3900)
- Ensure new replicas respect MaxAge when a stream is scaled up (#3861)
- Snapshots would not compact after being applied (#3907)
- Fix filtered pending state calculation (#3910)
- Recover from a failed truncate on raft WAL (#3911)
- Fix JWT claims update if headers are passed (#3918)
- MQTT
Dependency Updates
- klauspost/compress - v1.16.0
- nats-io/nats.go - v1.24.0
- golang.org/x/crypto - v0.6.0
- golang.org/x/sys - v0.5.0
Complete Changes
Release v2.9.14
Changelog
Go Version
- 1.19.5: Both the release executables and Docker images are built with this Go release
Fixed
- JetStream
Complete Changes
Release v2.9.12
Changelog
NOTE: regressions were found in this release. Please skip this and go directly to the v2.9.14 release.
Go Version
- 1.19.5: Both the release executables and Docker images are built with this Go release
Added
- OS/Arch
- Add support for dragonfly BSD (#3804)
Improved
- JetStream
- Use highwayhash to optimize difference tracking for stream, consumer, and cluster snapshots (#3780)
- Add small tolerance in lag for stream and consumer health checks (#3794)
- Various optimizations related to snapshots and memory usage (#3828, #3831, #3837) Thanks to @MauriceVanVeen for the collaboration on this issue.
Fixed
- JetStream
- Update numCores and maxProcs if altered by container limits (#3796)
- Fix filtered state for all subjects when the first sequences are deleted (#3801)
- Updating a stream to direct gets would fail direct gets (#3806)
- Force consumer replicas to match for interest-based policy streams (#3817)
- Assign signal subscription to consumer when created (#3808)
- Properly process updates on a stream on restart (#3818)
- Select consumer peer(s) from active/online peers only on creation (#3821)
- Sourced streams that do not overlap subjects were incorrectly reported as a cycle (#3825)
- Fix for isGroupLeaderless when JS not available due to shutdown (#3830)
- Deadlock on data loss when holding mb lock (#3832)
- Fix consumer not getting messages after filter update (#3829)
- Fix current consumers not getting messages after purge (#3838) Thanks to @pcsegal for the report!
Updated Dependencies
- github.com/klauspost/compress - v1.15.15
- github.com/nats-io/nats.go - v1.23.0
- golang.org/x/time - v0.3.0
Complete Changes
Release v2.9.11
Changelog
Go Version
- 1.19.4: Both the release executables and Docker images are built with this Go release
Improved
- Remove duplicate subscription point to reduce memory usage (#3768)
Updated
- Update golang.org/x/crypto dependency to v0.5.0 (#3761). Thanks to @friedrichwilken for the contribution.
Fixed
- JetStream
- Allow recovery of stream meta file if not properly flushed prior to restart (#3752)
- Ensure max bytes are honored when message block is not properly flushed (#3757). Thanks to @containerpope for the report.
- Ensure new consumers assigned to an offline server are properly restored from the metaleader's snapshot (#3760)
- Set and clear observer state for servers with disconnected leaf nodes (#3763)
- Leaf node
- Fix duplicate messages when leaf node binds an account with service imports (#3751). Thanks to @asambres-form3 and @maxarndt for the original reports.
- Monitoring
- Add back existing
HealthzOptions.JSEnabledfield to restore backwards compatibility (#3744)
- Add back existing
Complete Changes
Release v2.9.10
Changelog
Go Version
- 1.19.4: Both the release executables and Docker images are built with this Go release
Improved
- JetStream
Fixed
-
JetStream
- Ensure previously assigned nodes are removed from stream assignment (#3707, #3709)
- Bad first sequence and expiration stopped working after server restart (#3711)
- Fix no-quorum issue if leader is restarted with a memory-based clustered stream (#3713)
- Fix dangling message block on compaction/cleanup which could prevent a stream from restoring (#3717) thanks to @k15r for the report
- Prevent overlapping stream subjects on stream update in non-clustered JetStream (#3715)
-
Monitoring
/healthz?js-enabled=truebehavior now properly asserts whether JetStream is enabled if it is expected to be and does not check for health of the assets. (#3704)
Complete Changes
Release v2.9.9
Changelog
Go Version
- 1.19.4: Both the release executables and Docker images are built with this Go release
Improved
-
JetStream
-
Help/Usage
- Display two additional
--reloadsignal options,ldmandterm(#3683)
- Display two additional
Fixed
-
Authorization
- Prevent returning
no_auth_requiredwhen a client tries to connect in operator mode (#3667)- Any client (Java) that suppressed sending credentials before of this flag could be affected.
- This only affects the 2.9.8 server version
- Prevent returning
-
JetStream
- Tag policies not honored during stream replica reassignment after a peer is removed (#3678)
- Address issues when concurrent "create" requests for the same stream are issued (#3679)
- Server panic when consumer state was not decoded correctly (#3688)
- Ensure consumers that are deleted on startup are removed from the system (#3689)
- Fixed JetStream remained disabled for reactivated JWT accounts (#3690, thank you @JulienVdG)
-
Leafnodes
- Do not delay PINGs for leaf connections (#3692, thank you @sandykellagher)
Complete Changes
Release v2.9.8
Changelog
Go Version
- 1.19.3: Both release executables and Docker images are built with this Go release.
Monitoring:
- JetStream:
- Server Info:
- If
no_auth_useris set, clear the auth required flag in the server info presented to the client (#3659)
- If
Complete Changes
Release v2.9.7
Changelog
Go Version
- 1.19.3: Both release executables and Docker images are built with this Go release.
Improved:
- JetStream:
Fixed
- JetStream:
- For "Interest" or "WorkQueue" policy streams, when a consumer was deleted, a stream view could cause high CPU or memory usage. Thanks to @Kaarel for the report (#3610)
- Make sure to enforce HA asset limits during peer processing as well as assignment (#3614)
- Account max streams/consumers not always honored (#3615)
- Reduce some warning log messages "append entries" (#3619)
- Logic bug that would prevent some stream messages from being deleted. Thanks to @Kaarel for the report (#3620, #3625)
- Account removal leaks subscriptions. Thanks to @JulienVdG for the report (#3627)
- Server fails to start on concurrent map read/write (#3629, #3634)
- Possible panic on stream info when leader is not yet or elected or loses quorum. Thanks to @apuckey for the report (#3631)
- Allow any type of ack to suppress auto-cleanup of consumer (#3635)
- Make mirror consumers use filtered version of consumer create (#3638)
- WorkQueue was not correctly rejecting overlapping consumers in some cases. Thanks to @Kilio22 for the report (#3640)
- Make sure header keys do not have additional prefixes. Thanks to @osmanovv for the report (#3649)
- Routing:
- Weighted subject mappings updates not applied (#3618)