Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
+### Fixed
+
+- Wait for queued tasks to end at worker termination.
+
## [3.1.1] - 2023-12-16
### Fixed
## [3.1.1] - 2023-12-16
### Fixed
checkFilePath,
checkValidTasksQueueOptions,
checkValidWorkerChoiceStrategy,
checkFilePath,
checkValidTasksQueueOptions,
checkValidWorkerChoiceStrategy,
- updateMeasurementStatistics
- // waitWorkerNodeEvents
+ updateMeasurementStatistics,
+ waitWorkerNodeEvents
*/
protected async destroyWorkerNode (workerNodeKey: number): Promise<void> {
this.flagWorkerNodeAsNotReady(workerNodeKey)
*/
protected async destroyWorkerNode (workerNodeKey: number): Promise<void> {
this.flagWorkerNodeAsNotReady(workerNodeKey)
- this.flushTasksQueue(workerNodeKey)
+ const flushedTasks = this.flushTasksQueue(workerNodeKey)
const workerNode = this.workerNodes[workerNodeKey]
const workerNode = this.workerNodes[workerNodeKey]
- // FIXME: wait for tasks to be finished
- // await waitWorkerNodeEvents(
- // workerNode,
- // 'taskFinished',
- // workerNode.usage.tasks.executing
- // )
+ await waitWorkerNodeEvents(workerNode, 'taskFinished', flushedTasks)
await this.sendKillMessageToWorker(workerNodeKey)
await workerNode.terminate()
}
await this.sendKillMessageToWorker(workerNodeKey)
await workerNode.terminate()
}
return this.workerNodes[workerNodeKey].tasksQueueSize()
}
return this.workerNodes[workerNodeKey].tasksQueueSize()
}
- protected flushTasksQueue (workerNodeKey: number): void {
+ protected flushTasksQueue (workerNodeKey: number): number {
+ let flushedTasks = 0
while (this.tasksQueueSize(workerNodeKey) > 0) {
this.executeTask(
workerNodeKey,
this.dequeueTask(workerNodeKey) as Task<Data>
)
while (this.tasksQueueSize(workerNodeKey) > 0) {
this.executeTask(
workerNodeKey,
this.dequeueTask(workerNodeKey) as Task<Data>
)
}
this.workerNodes[workerNodeKey].clearTasksQueue()
}
this.workerNodes[workerNodeKey].clearTasksQueue()
}
private flushTasksQueues (): void {
}
private flushTasksQueues (): void {