Releases: nats-io/nats.deno
v1.29.2
What's Changed
Important Breaking Change
This release includes an important fix to object store which is a breaking change for old JavaScript clients. The sha-256 library previously used, generated incorrect digests for large payloads (512MB or larger). The library has been replaced with npms js-sha256, but any object that exercised the issue sports an incorrect digest. This issue has not been observed with objects smaller than 512MB.
- get the object with a different tool or client.
- or a different tool or client created an object
Since upgrading to this client will calculate hashes differently for the large objects, upgrading will detect objects that previously were correct as corrupt.
Migration Process
- If you don't use object-store you can ignore this process.
- If your objects are well below the 500MB limit, it you can possibly skip the migration step (not recommended).
- If you have large objects that are greater than 500MB you MUST run the migration tool or re-put your objects.
To aid you in migration a new tool is provided that will update hashes that were incorrect and detected to be created by the previous library. Please run this tool on object stores prior to upgrading.
The tool will read all objects in the object store, and calculate a digest using the original (broken sha-256 implementation) and the updated one. If the hashes differ, and the broken digests match, the tool will update the entry's metadata to the correct digest. The tool can run in a check-only mode by providing the --check
option.
Note that after updating your object store, old JavaScript clients will detect the large entries as corrupt.
# Deno is required - to install [Deno see https://deno.com/](https://deno.com/)
deno run -A https://raw.githubusercontent.com/nats-io/nats.deno/e66877c587daf04159220b8cfd607132ae0e5d70/bin/fix-os-digests.ts -h
Usage: fix-os [-s server] [--creds=/path/file.creds] [--check] --bucket=name
- [JS] [OBJ] [BREAKING] replace sha256 library used by the client for objectstore entries and migration tool by @aricart in #745 and #747
- [BUMP] ci server version, client version by @aricart in #748
Full Changelog: v1.29.1...v1.29.2
v1.29.1
v1.29.0
What's Changed
- [FIX] [JS]: ordered pull consumer would never fail to reset on initial creation if there was an error by @aricart in #726
- [FIX] [SRV]
processingTime
is now reported in nanoseconds with some additional doc improvements, fixes by @aricart in #727 - [CI] clamp JWT lib used by tests by @aricart in #735
- [FEAT] [JS] Added
Consumers.getPullConsumerFor(ConsumerInfo)
method to get a by Consumer with a ConsumerInfo (bypassing additional consumer info to verify the consumer exists) by @aricart in #736 - [FIX] [JS] Deprecated
DeliveryInfo.redeliveryCount
and addedDeliveryInfo.deliveryCount
(JsMsg.info) as this count tracks the number of times that the message has been delivered, also fixes in documentation to the same effect @aricart in #738 - [DOC] add link to migration doc by @alexbozhenko in #737
New Contributors
- @alexbozhenko made their first contribution in #737
Full Changelog: v1.28.2...v1.29.0
v1.28.2
v1.28.1
What's Changed
- [FIX] [JETSTREAM] [OBJ] the option for replicas in objectstore was not honored by @SalvaChiLlo in #717
- [TEST] added test to cover fix for #717 by @aricart in #719
- [FIX] [CORE] identify ipv6 encoding an ipv4 as ipv6 by @aricart in #718
- [BUMP] version to 1.28.1 by @aricart in #720
New Contributors
- @SalvaChiLlo made their first contribution in #717
Full Changelog: v1.28.0...v1.28.1
v1.28.0
What's Changed
This release has an important fix that stops subscription leaks when making requests but the request results in a timeout or an error.
- [FIX] [CORE]
noMux
option forrequest()
andrequestMany()
leaked subscriptions if the request resulted in an error such as a timeout, no responders or a permissions error by @aricart in #715 - [BUMP] CI deps and version by @aricart in #716
Full Changelog: v1.27.0...v1.28.0
v1.27.0
What's Changed
Small fixes to NATS core functionality and JetStream
- [FIX] [CORE] fixed an issue where permission errors related queue subscriptions was not properly notified to the client by @aricart in #701
- [FIX] [CORE] account expired protocol message was not notified properly by @aricart in #702
- [FEAT] [CORE] added connect option
resolve
, which allows a client to opt out of hostname resolution by @aricart in #704 - [FIX] [KV] fixed an issue where
maxBucketSize
(deprecated option) overrodemax_bytes
by @aricart in #707 - [FIX] [JS] honor JS timeout in ackAck() and also allow to override by @aricart in #708
- [FEAT] [KV] added support for listing keys with multiple filters by @aricart in #710
- [BUMP] ci dependencies and client version by @aricart in #711
Full Changelog: v1.26.0...v1.27.0
v1.26.0
What's Changed
- [FIX] [JS] [CONSUMERS] improved ordered pull consumer - api calls on the consumer no longer re-create the consumer - this reduces the number of consumer resets to only cases where there are errors or delivery sequence mismatches by @aricart in #699
- [BUMP] deno and client version by @aricart in #700
Full Changelog: v1.25.0...v1.26.0
v1.25.0
v1.24.0
What's Changed
The following fixes are related to ordered push consumers and watchers for KV and ObjectStore.
- [FIX] more robust watcher in case consumer is recreated while the cluster is flapping by @aricart in #693
- [FIX] legacy order consumer subscription leak by @aricart in #694
- [BUMP] deno to 1.43.1 and client version by @aricart in #695
Full Changelog: v1.23.0...v1.24.0