X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=CHANGELOG.md;h=0fe43abdff91300f83c2d96a3fef74b238a534fe;hb=251d6ac2d29d7361d671a8df17af51b414ea3b83;hp=95fbef8b5516e1c536fd4fd2e4db5b4fc87c9d63;hpb=6b83e544b1827a8a04898c3032dab73fe19687e6;p=poolifier.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 95fbef8b..0fe43abd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Add `queueMaxSize` option to tasks queue options. +- Add O(1) deque implementation implemented with doubly linked list and use it for tasks queueing. +- Add tasks stealing algorithm when a worker node queue is back pressured if tasks queueing is enabled. + +## [2.6.31] - 2023-08-20 + +### Fixed + +- Fix worker choice strategy retries mechanism in some edge cases. + +### Changed + +- Make orthogonal worker choice strategies tasks distribution and created dynamic worker usage. +- Remove the experimental status of the `LEAST_ELU` worker choice strategy. + +## [2.6.30] - 2023-08-19 + +### Fixed + +- Ensure pool event `backPressure` is emitted. +- Ensure pool event `full` is emitted only once. +- Ensure worker node cannot be instantiated without proper arguments. + +## [2.6.29] - 2023-08-18 + +### Fixed + +- Fix race condition between ready and task functions worker message handling at startup. +- Fix duplicate task function worker usage statistics computation per task function. +- Update task function worker usage statistics if and only if there's at least two different task functions. +- Fix race condition at task function worker usage executing task computation leading to negative value. + +### Added + +- Add back pressure detection on the worker node queue. Event `backPressure` is emitted when all worker node queues are full (worker node queue size >= poolMaxSize^2). +- Use back pressure detection in worker choice strategies. +- Add worker choice strategies retries mechanism if no worker is eligible. + +## [2.6.28] - 2023-08-16 + +### Fixed + +- Ensure pool workers are properly initialized. + +### Added + +- HTTP server pool examples: express-cluster, express-hybrid. + +### Changed + +- Remove now useless branching in worker hot code path. + +## [2.6.27] - 2023-08-15 + +### Fixed + +- Add `KillHandler` type definition to exported types. + +### Added + +- Add `destroy` event to pool API. + +## [2.6.26] - 2023-08-15 + +### Added + +- Add kill handler to worker options allowing to execute custom code when worker is killed. +- Add `listTaskFunctions()` method to pool API. +- SMTP server pool example: nodemailer. + +## [2.6.25] - 2023-08-13 + +### Added + +- HTTP server pool examples: fastify-cluster, fastify-hybrid. +- WebSocket server pool examples: ws-cluster, ws-hybrid. + +## [2.6.24] - 2023-08-12 + +### Added + - Add array of transferable objects to the `execute()` method arguments. +- WebSocket server pool examples: ws-worker_threads. ## [2.6.23] - 2023-08-11 @@ -20,7 +102,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - HTTP client pool examples: fetch, node-fetch and axios with multiple task functions. -- HTTP server pool examples: express, fastify. +- HTTP server pool examples: express-worker_threads, fastify-worker_threads. ## [2.6.22] - 2023-08-10 @@ -44,7 +126,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fix queued tasks redistribution on error task execution starvation. -- Ensure task queueing per worker condition is untangled from the pool busyness semantic. +- Ensure tasks queueing per worker condition is untangled from the pool busyness semantic. ### Changed @@ -66,7 +148,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Add `listTaskFunctions()` method to worker class. +- Add `listTaskFunctions()` method to worker API. ## [2.6.16] - 2023-07-12 @@ -152,7 +234,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Add safe helper `availableParallelism` to help sizing the pool. +- Add safe helper `availableParallelism()` to help sizing the pool. ### Fixed @@ -167,7 +249,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Artificial version bump to 2.6.5 to workaround publication issue. -- Ensure cluster pool destroy() gracefully shutdowns worker's server. +- Ensure cluster pool `destroy()` gracefully shutdowns worker's server. - Ensure pool event is emitted before task error promise rejection. - Fix queued tasks count computation. @@ -183,7 +265,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Ensure cluster pool destroy() gracefully shutdowns worker's server. +- Ensure cluster pool `destroy()` gracefully shutdowns worker's server. - Ensure pool event is emitted before task error promise rejection. - Fix queued tasks count computation.