Merge dependabot/npm_and_yarn/examples/typescript/http-server-pool/fastify-hybrid...
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 2 Apr 2024 02:22:13 +0000 (04:22 +0200)
committerGitHub <noreply@github.com>
Tue, 2 Apr 2024 02:22:13 +0000 (04:22 +0200)
13 files changed:
examples/typescript/http-server-pool/express-cluster/package.json
examples/typescript/http-server-pool/express-cluster/pnpm-lock.yaml
examples/typescript/http-server-pool/fastify-cluster/package.json
examples/typescript/http-server-pool/fastify-cluster/pnpm-lock.yaml
examples/typescript/smtp-client-pool/package.json
examples/typescript/smtp-client-pool/pnpm-lock.yaml
examples/typescript/websocket-server-pool/ws-cluster/package.json
examples/typescript/websocket-server-pool/ws-cluster/pnpm-lock.yaml
examples/typescript/websocket-server-pool/ws-hybrid/package.json
examples/typescript/websocket-server-pool/ws-hybrid/pnpm-lock.yaml
examples/typescript/websocket-server-pool/ws-worker_threads/package.json
examples/typescript/websocket-server-pool/ws-worker_threads/pnpm-lock.yaml
src/pools/abstract-pool.ts

index 7ecea2df26c93703549807961fe2746f4d80b406..56abddc56aa134a7aaf28399f444e602b9c98677 100644 (file)
@@ -22,7 +22,7 @@
   "license": "ISC",
   "dependencies": {
     "express": "^4.19.2",
-    "poolifier": "^3.1.27"
+    "poolifier": "^3.1.28"
   },
   "devDependencies": {
     "@rollup/plugin-typescript": "^11.1.6",
index e91a600061c3edbde413a64000495405e59862bb..7a825cfef4d6e36d0ccb3837323544a02db785c2 100644 (file)
@@ -9,8 +9,8 @@ dependencies:
     specifier: ^4.19.2
     version: 4.19.2
   poolifier:
-    specifier: ^3.1.27
-    version: 3.1.27
+    specifier: ^3.1.28
+    version: 3.1.28
 
 devDependencies:
   '@rollup/plugin-typescript':
@@ -1086,8 +1086,8 @@ packages:
     engines: {node: '>=8.6'}
     dev: true
 
-  /poolifier@3.1.27:
-    resolution: {integrity: sha512-gksnD2HqsyOa7rHPZ8KaLNrGYUi5tu4kyWi/a2NehvYZZVJGjiNbOy8/lAoSa6nqbb8cTZD9vdQqnFQl+IdkEw==}
+  /poolifier@3.1.28:
+    resolution: {integrity: sha512-VAcfl1TlLA6cjYWksF1N8dKIFSqmyolvCYXiRDXV0YRoHh4XBsUmkSBbBdrIblJDrKu32+ERxFw0B89XCuXuUg==}
     engines: {node: '>=18.0.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false
index 968b99f20abe8cf14c6660067f9fe27d4479fbd6..937b71240cc556747405db9f685176a79e9ed44e 100644 (file)
@@ -22,7 +22,7 @@
   "license": "ISC",
   "dependencies": {
     "fastify": "^4.26.2",
-    "poolifier": "^3.1.27"
+    "poolifier": "^3.1.28"
   },
   "devDependencies": {
     "@rollup/plugin-typescript": "^11.1.6",
index 79d19f9e8a29dd1949813181b8000f9a25740b06..34e554d87ede2cfc9ae5666be46a40bbe5822e80 100644 (file)
@@ -9,8 +9,8 @@ dependencies:
     specifier: ^4.26.2
     version: 4.26.2
   poolifier:
-    specifier: ^3.1.27
-    version: 3.1.27
+    specifier: ^3.1.28
+    version: 3.1.28
 
 devDependencies:
   '@rollup/plugin-typescript':
@@ -952,8 +952,8 @@ packages:
       thread-stream: 2.4.1
     dev: false
 
-  /poolifier@3.1.27:
-    resolution: {integrity: sha512-gksnD2HqsyOa7rHPZ8KaLNrGYUi5tu4kyWi/a2NehvYZZVJGjiNbOy8/lAoSa6nqbb8cTZD9vdQqnFQl+IdkEw==}
+  /poolifier@3.1.28:
+    resolution: {integrity: sha512-VAcfl1TlLA6cjYWksF1N8dKIFSqmyolvCYXiRDXV0YRoHh4XBsUmkSBbBdrIblJDrKu32+ERxFw0B89XCuXuUg==}
     engines: {node: '>=18.0.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false
index 8aac83363f61ec83cb756392e77fbf055833435b..f0152faa19d230063cf9bf0fdf74a2287a4beabc 100644 (file)
@@ -20,7 +20,7 @@
   "license": "ISC",
   "dependencies": {
     "nodemailer": "^6.9.13",
-    "poolifier": "^3.1.27"
+    "poolifier": "^3.1.28"
   },
   "devDependencies": {
     "@types/node": "^20.12.2",
index 082463bd1fbc15c7049426cb52290165a61f3fa4..16b9b2f456f48865346ba75a7f55be5774ba1237 100644 (file)
@@ -9,8 +9,8 @@ dependencies:
     specifier: ^6.9.13
     version: 6.9.13
   poolifier:
-    specifier: ^3.1.27
-    version: 3.1.27
+    specifier: ^3.1.28
+    version: 3.1.28
 
 devDependencies:
   '@types/node':
@@ -42,8 +42,8 @@ packages:
     engines: {node: '>=6.0.0'}
     dev: false
 
-  /poolifier@3.1.27:
-    resolution: {integrity: sha512-gksnD2HqsyOa7rHPZ8KaLNrGYUi5tu4kyWi/a2NehvYZZVJGjiNbOy8/lAoSa6nqbb8cTZD9vdQqnFQl+IdkEw==}
+  /poolifier@3.1.28:
+    resolution: {integrity: sha512-VAcfl1TlLA6cjYWksF1N8dKIFSqmyolvCYXiRDXV0YRoHh4XBsUmkSBbBdrIblJDrKu32+ERxFw0B89XCuXuUg==}
     engines: {node: '>=18.0.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false
index d3643f904dae889c9804c72527c95206cd38eaf4..7fdf3d3214cc60c6d9de89a4339930bb898cb2d3 100644 (file)
@@ -20,7 +20,7 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "poolifier": "^3.1.27",
+    "poolifier": "^3.1.28",
     "ws": "^8.16.0"
   },
   "devDependencies": {
index 1caceb97faadc118364815f7fcc98acf88c0d43d..c5efdc009e01dca55f6fe19d209af9882ebf363a 100644 (file)
@@ -6,8 +6,8 @@ settings:
 
 dependencies:
   poolifier:
-    specifier: ^3.1.27
-    version: 3.1.27
+    specifier: ^3.1.28
+    version: 3.1.28
   ws:
     specifier: ^8.16.0
     version: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)
@@ -515,8 +515,8 @@ packages:
     engines: {node: '>=8.6'}
     dev: true
 
-  /poolifier@3.1.27:
-    resolution: {integrity: sha512-gksnD2HqsyOa7rHPZ8KaLNrGYUi5tu4kyWi/a2NehvYZZVJGjiNbOy8/lAoSa6nqbb8cTZD9vdQqnFQl+IdkEw==}
+  /poolifier@3.1.28:
+    resolution: {integrity: sha512-VAcfl1TlLA6cjYWksF1N8dKIFSqmyolvCYXiRDXV0YRoHh4XBsUmkSBbBdrIblJDrKu32+ERxFw0B89XCuXuUg==}
     engines: {node: '>=18.0.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false
index e132ab48696daf55f2fd6f1e3412ca040743e7e4..6d324d7e2e0c5ead237f8b99284502f9546a9efd 100644 (file)
@@ -20,7 +20,7 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "poolifier": "^3.1.27",
+    "poolifier": "^3.1.28",
     "ws": "^8.16.0"
   },
   "devDependencies": {
index 1caceb97faadc118364815f7fcc98acf88c0d43d..c5efdc009e01dca55f6fe19d209af9882ebf363a 100644 (file)
@@ -6,8 +6,8 @@ settings:
 
 dependencies:
   poolifier:
-    specifier: ^3.1.27
-    version: 3.1.27
+    specifier: ^3.1.28
+    version: 3.1.28
   ws:
     specifier: ^8.16.0
     version: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)
@@ -515,8 +515,8 @@ packages:
     engines: {node: '>=8.6'}
     dev: true
 
-  /poolifier@3.1.27:
-    resolution: {integrity: sha512-gksnD2HqsyOa7rHPZ8KaLNrGYUi5tu4kyWi/a2NehvYZZVJGjiNbOy8/lAoSa6nqbb8cTZD9vdQqnFQl+IdkEw==}
+  /poolifier@3.1.28:
+    resolution: {integrity: sha512-VAcfl1TlLA6cjYWksF1N8dKIFSqmyolvCYXiRDXV0YRoHh4XBsUmkSBbBdrIblJDrKu32+ERxFw0B89XCuXuUg==}
     engines: {node: '>=18.0.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false
index c7e8b90a4961145f8f0553ea38f3da8e07181473..d5b95a8487be435a2b48772b3494e7fb4f23459a 100644 (file)
@@ -20,7 +20,7 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "poolifier": "^3.1.27",
+    "poolifier": "^3.1.28",
     "ws": "^8.16.0"
   },
   "devDependencies": {
index 764b2190739efb1deab81d7d74772969f472be25..67348970167db5482a531d036044f502ca9f81a4 100644 (file)
@@ -6,8 +6,8 @@ settings:
 
 dependencies:
   poolifier:
-    specifier: ^3.1.27
-    version: 3.1.27
+    specifier: ^3.1.28
+    version: 3.1.28
   ws:
     specifier: ^8.16.0
     version: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)
@@ -59,8 +59,8 @@ packages:
     requiresBuild: true
     dev: false
 
-  /poolifier@3.1.27:
-    resolution: {integrity: sha512-gksnD2HqsyOa7rHPZ8KaLNrGYUi5tu4kyWi/a2NehvYZZVJGjiNbOy8/lAoSa6nqbb8cTZD9vdQqnFQl+IdkEw==}
+  /poolifier@3.1.28:
+    resolution: {integrity: sha512-VAcfl1TlLA6cjYWksF1N8dKIFSqmyolvCYXiRDXV0YRoHh4XBsUmkSBbBdrIblJDrKu32+ERxFw0B89XCuXuUg==}
     engines: {node: '>=18.0.0', pnpm: '>=8.6.0'}
     requiresBuild: true
     dev: false
index 5c153087640dc76e09b029deaafdd72c3fa1f47b..5eeb57911903587c0760dac8fee11e30407cb86a 100644 (file)
@@ -117,6 +117,10 @@ export abstract class AbstractPool<
    * Whether the pool is destroying or not.
    */
   private destroying: boolean
+  /**
+   * Whether the minimum number of workers is starting or not.
+   */
+  private startingMinimumNumberOfWorkers: boolean
   /**
    * Whether the pool ready event has been emitted or not.
    */
@@ -175,6 +179,7 @@ export abstract class AbstractPool<
     this.starting = false
     this.destroying = false
     this.readyEventEmitted = false
+    this.startingMinimumNumberOfWorkers = false
     if (this.opts.startWorkers === true) {
       this.start()
     }
@@ -953,6 +958,7 @@ export abstract class AbstractPool<
    * Starts the minimum number of workers.
    */
   private startMinimumNumberOfWorkers (): void {
+    this.startingMinimumNumberOfWorkers = true
     while (
       this.workerNodes.reduce(
         (accumulator, workerNode) =>
@@ -962,6 +968,7 @@ export abstract class AbstractPool<
     ) {
       this.createAndSetupWorkerNode()
     }
+    this.startingMinimumNumberOfWorkers = false
   }
 
   /** @inheritdoc */
@@ -1251,7 +1258,7 @@ export abstract class AbstractPool<
       ) {
         if (workerNode.info.dynamic) {
           this.createAndSetupDynamicWorkerNode()
-        } else {
+        } else if (!this.startingMinimumNumberOfWorkers) {
           this.startMinimumNumberOfWorkers()
         }
       }
@@ -1273,7 +1280,11 @@ export abstract class AbstractPool<
     )
     workerNode.registerOnceWorkerEventHandler('exit', () => {
       this.removeWorkerNode(workerNode)
-      if (this.started && !this.destroying) {
+      if (
+        this.started &&
+        !this.startingMinimumNumberOfWorkers &&
+        !this.destroying
+      ) {
         this.startMinimumNumberOfWorkers()
       }
     })