Tear down a worker that has hit its recycle threshold and replace it. Not a * crash, so it doesn't count against the budget.
(w: ParsePoolWorker)
| 325 | /** Tear down a worker that has hit its recycle threshold and replace it. Not a |
| 326 | * crash, so it doesn't count against the budget. */ |
| 327 | private recycle(w: ParsePoolWorker): void { |
| 328 | this.log(`Recycling worker after ${this.parseCounts.get(w)} parses (heap: ${Math.round(process.memoryUsage().rss / 1024 / 1024)}MB RSS)`); |
| 329 | this.removeWorker(w); |
| 330 | // Fire-and-forget: worker.terminate() can hang if WASM is wedged. |
| 331 | try { void w.terminate(); } catch { /* already gone */ } |
| 332 | if (this.healthy && !this.destroyed) this.spawnOne(); |
| 333 | } |
| 334 | |
| 335 | private removeWorker(w: ParsePoolWorker): void { |
| 336 | this.workers.delete(w); |
no test coverage detected