- const destinationWorkerNodeKey = this.getWorkerNodeKeyByWorkerId(workerId)
- const destinationWorkerNode = workerNodes[destinationWorkerNodeKey]
- for (const sourceWorkerNode of workerNodes) {
- if (sourceWorkerNode.usage.tasks.queued > 0) {
- if (
- destinationWorkerNode?.usage?.tasks?.executing <
- (this.opts.tasksQueueOptions?.concurrency as number)
- ) {
- const task = {
- ...(sourceWorkerNode.popTask() as Task<Data>),
- workerId: destinationWorkerNode.info.id as number
- }
- this.executeTask(destinationWorkerNodeKey, task)
- } else {
- const task = {
- ...(sourceWorkerNode.popTask() as Task<Data>),
- workerId: destinationWorkerNode.info.id as number
- }
- this.enqueueTask(destinationWorkerNodeKey, task)
- }
- break
+ const sourceWorkerNode = workerNodes.find(
+ (workerNode) =>
+ workerNode.info.ready &&
+ workerNode.info.id !== workerId &&
+ workerNode.usage.tasks.queued > 0
+ )
+ if (sourceWorkerNode != null) {
+ const task = {
+ ...(sourceWorkerNode.popTask() as Task<Data>),
+ workerId: destinationWorkerNode.info.id as number