Skip to content

Releases: SGrondin/bottleneck

v2.16.2

10 Feb 23:01
Compare
Choose a tag to compare
  • Wrapped functions now inherit their this context. It allows for much nicer object-oriented code.

Thank you @elliot-nelson for this feature.

var object = {
    value: "Hello World",
    hello: limit.wrap(function () {
        return this.value;
    })
};

// When calling `object.hello()`, `this` = `object`
object.hello().then(console.log);
  • Clustering code now handles timeout events (Redis key TTL expiration) more efficiently.

v2.16.1

07 Feb 15:23
Compare
Choose a tag to compare
  • Fix an edge case when using Clustering at high load and/or in a large Cluster. A race condition could occur that left the data in a corrupted state.

v2.16.0

03 Feb 20:46
Compare
Choose a tag to compare
  • Added limiter.clusterQueued(). Returns the total weight of queued jobs in the Cluster.
  • Fixed an edge case when using Clustering and the BLOCK strategy, after the Cluster entered Blocked mode.

v2.15.3

15 Jan 20:41
Compare
Choose a tag to compare
  • Fixed a memory leak that prevented limiters from being garbage collected until limiter.disconnect() was called.
  • Fixed a small memory leak in limiter instantiation (2kb / instantiation).

v2.15.2

13 Jan 04:36
Compare
Choose a tag to compare
  • Fixed an issue with Clustering, introduced in 2.14.0 or 2.15.1 depending on whether replication is being used, where it would not register that a client has become unresponsive, and this would lead to the whole cluster getting "stuck" due to assigning priority to that client. It would then only launch new jobs every 4-5s. This has been fixed and a strong test added.

v2.15.1

12 Jan 18:51
Compare
Choose a tag to compare
  • Fixed a script exception when using Redis Cluster. More information in this issue.

v2.15.0

31 Dec 22:01
Compare
Choose a tag to compare
  • Added the 'failed' and 'retry' events. Bottleneck now support retries. See the Docs.

v2.14.1

23 Dec 21:00
Compare
Choose a tag to compare

v2.14.0

18 Dec 20:24
Compare
Choose a tag to compare
  • Clustering now spreads load evenly across instances in the Cluster
  • When using Clustering, group.deleteKey(key) now deletes keys (across the Cluster) even if they are not present in the local Group instance
  • Added group.clusterKeys(). Unlike group.keys(), it returns all Group keys in the Cluster, not just those in the local Group instance.

v2.13.2

04 Dec 05:05
Compare
Choose a tag to compare
  • Fixed an edge case where limiter.updateSettings() would fail when using Clustering and both maxConcurrent and reservoir are null after applying the new settings.