From ff47279b25b4a5dc3a224945cb05d53b5e80a7ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Wed, 16 Apr 2025 16:19:47 +0200 Subject: [PATCH] perf(core): Reuse context in `runOnceForEachItem` mode in task runner (#14682) --- .../@n8n/task-runner/src/js-task-runner/js-task-runner.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts b/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts index 40eb3d1896..fa48fdf0cf 100644 --- a/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts +++ b/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts @@ -303,10 +303,12 @@ export class JsTaskRunner extends TaskRunner { ? settings.chunk.startIndex + settings.chunk.count : inputItems.length; + const context = this.buildContext(taskId, workflow, data.node); + for (let index = chunkStartIdx; index < chunkEndIdx; index++) { - const item = inputItems[index]; const dataProxy = this.createDataProxy(data, workflow, index); - const context = this.buildContext(taskId, workflow, data.node, dataProxy, { item }); + + Object.assign(context, dataProxy, { item: inputItems[index] }); try { let result = await new Promise((resolve, reject) => { @@ -515,7 +517,7 @@ export class JsTaskRunner extends TaskRunner { taskId: string, workflow: Workflow, node: INode, - dataProxy: IWorkflowDataProxyData, + dataProxy?: IWorkflowDataProxyData, additionalProperties: Record = {}, ): Context { return createContext({