- this.workerSet.add({ worker, numberOfWorkerElements: 0 });
- // Start worker sequentially to optimize memory at startup
- this.workerOptions.workerStartDelay > 0 && await Utils.sleep(this.workerOptions.workerStartDelay);
+ worker.on('error', this.workerOptions.poolOptions?.errorHandler ?? EMPTY_FUNCTION);
+ worker.on('error', (error) => {
+ this.emitter?.emit(WorkerSetEvents.error, error);
+ if (this.workerOptions.poolOptions?.restartWorkerOnError && !this.workerStartup) {
+ this.addWorkerSetElement();
+ }
+ });
+ worker.on('online', this.workerOptions.poolOptions?.onlineHandler ?? EMPTY_FUNCTION);
+ worker.on('exit', this.workerOptions.poolOptions?.exitHandler ?? EMPTY_FUNCTION);
+ worker.once('exit', () =>
+ this.removeWorkerSetElement(this.getWorkerSetElementByWorker(worker)!),
+ );
+ const workerSetElement: WorkerSetElement = { worker, numberOfWorkerElements: 0 };
+ this.workerSet.add(workerSetElement);
+ this.workerStartup = false;
+ return workerSetElement;