repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix: ensure not more than one task is executed on a worker with tasks
[poolifier.git]
/
src
/
pools
/
abstract-pool.ts
diff --git
a/src/pools/abstract-pool.ts
b/src/pools/abstract-pool.ts
index 41ce6aa019a5269a0a47e338934c093aa2a3ee6d..a8104e9e26bdb31dd7d0374794538eafd9acb116 100644
(file)
--- a/
src/pools/abstract-pool.ts
+++ b/
src/pools/abstract-pool.ts
@@
-236,17
+236,14
@@
export abstract class AbstractPool<
id: crypto.randomUUID()
}
const res = this.internalExecute(workerNodeKey, workerNode, submittedTask)
id: crypto.randomUUID()
}
const res = this.internalExecute(workerNodeKey, workerNode, submittedTask)
- let currentTask: Task<Data> = submittedTask
if (
this.opts.enableTasksQueue === true &&
if (
this.opts.enableTasksQueue === true &&
- (this.busy || this.
tasksQueueSize(workerNodeKey)
> 0)
+ (this.busy || this.
workerNodes[workerNodeKey].tasksUsage.running
> 0)
) {
) {
- currentTask = this.enqueueDequeueTask(
- workerNodeKey,
- submittedTask
- ) as Task<Data>
+ this.enqueueTask(workerNodeKey, submittedTask)
+ } else {
+ this.sendToWorker(workerNode.worker, submittedTask)
}
}
- this.sendToWorker(workerNode.worker, currentTask)
this.checkAndEmitEvents()
// eslint-disable-next-line @typescript-eslint/return-await
return res
this.checkAndEmitEvents()
// eslint-disable-next-line @typescript-eslint/return-await
return res
@@
-558,14
+555,6
@@
export abstract class AbstractPool<
this.workerChoiceStrategyContext.remove(workerNodeKey)
}
this.workerChoiceStrategyContext.remove(workerNodeKey)
}
- private enqueueDequeueTask (
- workerNodeKey: number,
- task: Task<Data>
- ): Task<Data> | undefined {
- this.enqueueTask(workerNodeKey, task)
- return this.dequeueTask(workerNodeKey)
- }
-
private enqueueTask (workerNodeKey: number, task: Task<Data>): void {
this.workerNodes[workerNodeKey].tasksQueue.push(task)
}
private enqueueTask (workerNodeKey: number, task: Task<Data>): void {
this.workerNodes[workerNodeKey].tasksQueue.push(task)
}