X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2FWorkerSet.ts;h=39e8eca388bdd402fb8f5d3c73e5d3eda960ba1f;hb=061ff2b0d7abb884c9568d669e70ce1d65bcb628;hp=c1fecdcec2f7f6b03adfe412a2bfe18c8d997935;hpb=769d3b106c5e4744487bc633da4e4ee93f8f1bf4;p=e-mobility-charging-stations-simulator.git diff --git a/src/worker/WorkerSet.ts b/src/worker/WorkerSet.ts index c1fecdce..39e8eca3 100644 --- a/src/worker/WorkerSet.ts +++ b/src/worker/WorkerSet.ts @@ -19,6 +19,7 @@ import { sleep } from './WorkerUtils'; export class WorkerSet extends WorkerAbstract { public readonly emitter!: EventEmitter; private readonly workerSet: Set; + private workerStartup: boolean; /** * Creates a new `WorkerSet`. @@ -48,6 +49,7 @@ export class WorkerSet extends WorkerAbstract { if (this.workerOptions.poolOptions?.enableEvents) { this.emitter = new EventEmitter(); } + this.workerStartup = false; } get info(): SetInfo { @@ -114,6 +116,7 @@ export class WorkerSet extends WorkerAbstract { * Adds a new `WorkerSetElement`. */ private addWorkerSetElement(): WorkerSetElement { + this.workerStartup = true; const worker = new Worker(this.workerScript, { env: SHARE_ENV, ...this.workerOptions.poolOptions?.workerOptions, @@ -129,7 +132,7 @@ export class WorkerSet extends WorkerAbstract { worker.on('error', this.workerOptions.poolOptions?.errorHandler ?? EMPTY_FUNCTION); worker.on('error', (error) => { this.emitter?.emit(WorkerSetEvents.error, error); - if (this.workerOptions.poolOptions?.restartWorkerOnError) { + if (this.workerOptions.poolOptions?.restartWorkerOnError && !this.workerStartup) { this.addWorkerSetElement(); } }); @@ -140,6 +143,7 @@ export class WorkerSet extends WorkerAbstract { ); const workerSetElement: WorkerSetElement = { worker, numberOfWorkerElements: 0 }; this.workerSet.add(workerSetElement); + this.workerStartup = false; return workerSetElement; }