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)