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_catchup
to 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