Merge branch 'master' into combine-prs-branch
authorJérôme Benoit <jerome.benoit@sap.com>
Wed, 16 Aug 2023 14:17:20 +0000 (16:17 +0200)
committerGitHub <noreply@github.com>
Wed, 16 Aug 2023 14:17:20 +0000 (16:17 +0200)
.github/dependabot.yml
CHANGELOG.md
README.md
examples/typescript/http-server-pool/express-hybrid/src/express-worker.ts
examples/typescript/http-server-pool/fastify-hybrid/src/fastify-poolifier.ts
examples/typescript/http-server-pool/fastify-hybrid/src/fastify-worker.ts
examples/typescript/http-server-pool/fastify-worker_threads/src/fastify-poolifier.ts
examples/typescript/websocket-server-pool/ws-cluster/src/worker.ts
examples/typescript/websocket-server-pool/ws-hybrid/src/websocket-server-worker.ts
examples/typescript/websocket-server-pool/ws-worker_threads/package.json
examples/typescript/websocket-server-pool/ws-worker_threads/pnpm-lock.yaml

index 5be0cd59117e1926c23a2c84728c608ae80e25db..b9ed2479491deeaef0bb7d9393341d3e13e8adeb 100644 (file)
@@ -39,7 +39,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -51,7 +50,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -63,7 +61,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -74,7 +71,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -86,7 +82,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -98,7 +93,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -110,7 +104,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -122,7 +115,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -134,7 +126,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -146,7 +137,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
@@ -158,7 +148,6 @@ updates:
     labels:
       - 'dependencies'
       - 'examples'
-      - 'nocombine'
     reviewers:
       - 'pioardi'
       - 'jerome-benoit'
index 48733b72431fd1f858ebdcf0d9231a47f794bf79..6ac71e7c3013be7b954c20b9aab6e46a88f41cf6 100644 (file)
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+### Added
+
+- HTTP server pool examples: express-cluster, express-hybrid.
+
 ## [2.6.27] - 2023-08-15
 
 ### Fixed
index 4c247c6363fe40d9627f47388a7f541e7fd82aee..80a082ac1d5207ab79768e23c37cee35a73eb7b9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -40,10 +40,10 @@ Please consult our [general guidelines](#general-guidelines).
 - Easy switch from a pool type to another :white_check_mark:
 - No runtime dependencies :white_check_mark:
 - Proper integration with Node.js [async_hooks](https://nodejs.org/api/async_hooks.html) :white_check_mark:
-- Support CommonJS, ESM, and TypeScript :white_check_mark:
+- Support for CommonJS, ESM, and TypeScript :white_check_mark:
 - Support for [worker_threads](https://nodejs.org/api/worker_threads.html) and [cluster](https://nodejs.org/api/cluster.html) Node.js modules :white_check_mark:
-- Support multiple task functions :white_check_mark:
-- Support sync and async task functions :white_check_mark:
+- Support for multiple task functions :white_check_mark:
+- Support for sync and async task functions :white_check_mark:
 - Tasks distribution strategies :white_check_mark:
 - General guidelines on pool choice :white_check_mark:
 - Error handling out of the box :white_check_mark:
@@ -141,7 +141,7 @@ pool
 
 You can do the same with the classes _ClusterWorker_, _FixedClusterPool_ and _DynamicClusterPool_.
 
-**See [examples](./examples/) folder for more details**:
+**See [examples](./examples/) for more details**:
 
 - [Javascript](./examples/javascript/)
 - [Typescript](./examples/typescript/)
index a8ffbcb28fe0a5e6205b48964596d79d9520be41..56fad6d1b9edec47d79dd4e283dfe638e9507dfd 100644 (file)
@@ -31,7 +31,7 @@ ClusterWorkerResponse
   private static readonly startExpress = (
     workerData?: ClusterWorkerData
   ): ClusterWorkerResponse => {
-    const { port, workerFile, minWorkers, maxWorkers } =
+    const { port, workerFile, minWorkers, maxWorkers, ...poolOptions } =
       workerData as ClusterWorkerData
 
     ExpressWorker.requestHandlerPool = new DynamicThreadPool<
@@ -41,7 +41,7 @@ ClusterWorkerResponse
       minWorkers ?? 1,
       maxWorkers ?? availableParallelism(),
       workerFile,
-      workerData
+      poolOptions
     )
 
     const application: Express = express()
index 6e3a1dbfec643759ef30aecfd767e5f9d1c40e02..7426ed46f62300c701d20ddc9347bc5a58dd0b54 100644 (file)
@@ -20,11 +20,12 @@ const fastifyPoolifierPlugin: FastifyPluginCallback<FastifyPoolifierOptions> = (
     },
     ...options
   }
+  const { workerFile, minWorkers, maxWorkers, ...poolOptions } = options
   const pool = new DynamicThreadPool<ThreadWorkerData, ThreadWorkerResponse>(
-    options.minWorkers as number,
-    options.maxWorkers as number,
-    options.workerFile,
-    options
+    minWorkers as number,
+    maxWorkers as number,
+    workerFile,
+    poolOptions
   )
   if (!fastify.hasDecorator('pool')) {
     fastify.decorate('pool', pool)
index 9c2cb3c52d57e95f5452e624a0bde9ffd4e1a4ed..e21eb58c01294014fd9557f067c6544bcfcca18a 100644 (file)
@@ -13,13 +13,16 @@ ClusterWorkerResponse
   private static readonly startFastify = async (
     workerData?: ClusterWorkerData
   ): Promise<ClusterWorkerResponse> => {
-    const { port } = workerData as ClusterWorkerData
+    const { port, ...fastifyPoolifierOptions } = workerData as ClusterWorkerData
 
     FastifyWorker.fastify = Fastify({
       logger: true
     })
 
-    await FastifyWorker.fastify.register(fastifyPoolifier, workerData)
+    await FastifyWorker.fastify.register(
+      fastifyPoolifier,
+      fastifyPoolifierOptions
+    )
 
     FastifyWorker.fastify.all('/api/echo', async (request) => {
       return (
index 15e5656b12abe44477a65dc7efd4a994b51663d7..85e22c12698cc8d3dbe2fb068c005e993ed8872f 100644 (file)
@@ -20,11 +20,12 @@ const fastifyPoolifierPlugin: FastifyPluginCallback<FastifyPoolifierOptions> = (
     },
     ...options
   }
+  const { workerFile, minWorkers, maxWorkers, ...poolOptions } = options
   const pool = new DynamicThreadPool<WorkerData, WorkerResponse>(
-    options.minWorkers as number,
-    options.maxWorkers as number,
-    options.workerFile,
-    options
+    minWorkers as number,
+    maxWorkers as number,
+    workerFile,
+    poolOptions
   )
   if (!fastify.hasDecorator('pool')) {
     fastify.decorate('pool', pool)
index 7785a0d6d2f2191f33a9e362853971bd0f86f1c3..143dc6db38deac7f40f27001b3aa51e7ba9c2e2b 100644 (file)
@@ -22,6 +22,7 @@ class WebSocketServerWorker extends ClusterWorker<WorkerData, WorkerResponse> {
     workerData?: WorkerData
   ): WorkerResponse => {
     const { port } = workerData as WorkerData
+
     WebSocketServerWorker.wss = new WebSocketServer({ port }, () => {
       console.info(
         `⚡️[ws server]: WebSocket server is started in cluster worker at ws://localhost:${port}/`
index 7b4aa070f591a7240d6be5e6f9c5e842398e0d0c..437fae1b45600c5cb0bc700d690569c820b44b5e 100644 (file)
@@ -31,7 +31,7 @@ ClusterWorkerResponse
   private static readonly startWebSocketServer = (
     workerData?: ClusterWorkerData
   ): ClusterWorkerResponse => {
-    const { port, workerFile, minWorkers, maxWorkers } =
+    const { port, workerFile, minWorkers, maxWorkers, ...poolOptions } =
       workerData as ClusterWorkerData
 
     WebSocketServerWorker.requestHandlerPool = new DynamicThreadPool<
@@ -41,7 +41,7 @@ ClusterWorkerResponse
       minWorkers ?? 1,
       maxWorkers ?? availableParallelism(),
       workerFile,
-      workerData
+      poolOptions
     )
 
     WebSocketServerWorker.wss = new WebSocketServer({ port }, () => {
index b32012022881affae252ab2773b227d0a91bc812..b2002dbe148d74725633fa7c268ebfc3eab7aa39 100644 (file)
@@ -19,7 +19,7 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "poolifier": "^2.6.26",
+    "poolifier": "^2.6.27",
     "ws": "^8.13.0"
   },
   "devDependencies": {
index 5e2f43710771e848e2dbdb4bfe83c03d75c541a7..fcfeb485ce38be62ac85886357f51f9fd4078753 100644 (file)
@@ -6,8 +6,8 @@ settings:
 
 dependencies:
   poolifier:
-    specifier: ^2.6.26
-    version: 2.6.26
+    specifier: ^2.6.27
+    version: 2.6.27
   ws:
     specifier: ^8.13.0
     version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3)
@@ -57,8 +57,8 @@ packages:
     requiresBuild: true
     dev: false
 
-  /poolifier@2.6.26:
-    resolution: {integrity: sha512-cfcP3oCwtxG5DzxLXicUQjr6ieJzX/5/yT2Nt0tBByhufqtu6V2Son7kJXSHlWrNa08Y39cOaeNrOLCazoJ07w==}
+  /poolifier@2.6.27:
+    resolution: {integrity: sha512-lpB1KXar4d915E2KzsO8IT9tLhonqmLAo+MSL2evF/oYZZg0KZWFXaeupQhS4qvNudDC0M51Lg6J1rquUrBiHw==}
     engines: {node: '>=16.14.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false