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)
| 249 | /** Tear down a worker that has hit its recycle threshold and replace it. Not a |
| 250 | * crash, so it doesn't count against the budget. */ |
| 251 | private recycle(w: ParsePoolWorker): void { |
| 252 | this.log(`Recycling worker after ${this.parseCounts.get(w)} parses (heap: ${Math.round(process.memoryUsage().rss / 1024 / 1024)}MB RSS)`); |
| 253 | this.removeWorker(w); |
| 254 | // Fire-and-forget: worker.terminate() can hang if WASM is wedged. |
| 255 | try { void w.terminate(); } catch { /* already gone */ } |
| 256 | if (this.healthy && !this.destroyed) this.spawnOne(); |
| 257 | } |
| 258 | |
| 259 | private removeWorker(w: ParsePoolWorker): void { |
| 260 | this.workers.delete(w); |
no test coverage detected