diff --git a/packages/nx/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.ts b/packages/nx/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.ts index 8b96ad15cc2bc..0bcdf38b8bb7c 100644 --- a/packages/nx/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.ts +++ b/packages/nx/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.ts @@ -437,7 +437,7 @@ export async function createRunManyDynamicOutputRenderer({ lifeCycle.endTasks = (taskResults) => { for (let t of taskResults) { totalCompletedTasks++; - const matchingTaskRow = taskRows.find((r) => r.task === t.task); + const matchingTaskRow = taskRows.find((r) => r.task.id === t.task.id); if (matchingTaskRow) { matchingTaskRow.status = t.status; } diff --git a/packages/nx/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.ts b/packages/nx/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.ts index d4f5e37ee989b..735ee9bd99db0 100644 --- a/packages/nx/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.ts +++ b/packages/nx/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.ts @@ -16,7 +16,7 @@ import { formatFlags, formatTargetsAndProjects } from './formatting-utils'; export class StaticRunManyTerminalOutputLifeCycle implements LifeCycle { failedTasks = [] as Task[]; cachedTasks = [] as Task[]; - allCompletedTasks = new Set(); + allCompletedTasks = new Map(); constructor( private readonly projectNames: string[], @@ -123,14 +123,14 @@ export class StaticRunManyTerminalOutputLifeCycle implements LifeCycle { } private skippedTasks() { - return this.tasks.filter((t) => !this.allCompletedTasks.has(t)); + return this.tasks.filter((t) => !this.allCompletedTasks.has(t.id)); } endTasks( taskResults: { task: Task; status: TaskStatus; code: number }[] ): void { for (let t of taskResults) { - this.allCompletedTasks.add(t.task); + this.allCompletedTasks.set(t.task.id, t.task); if (t.status === 'failure') { this.failedTasks.push(t.task); } else if (t.status === 'local-cache') { diff --git a/packages/nx/src/tasks-runner/task-orchestrator.ts b/packages/nx/src/tasks-runner/task-orchestrator.ts index e2e6cf17aeee3..32cb172349c3a 100644 --- a/packages/nx/src/tasks-runner/task-orchestrator.ts +++ b/packages/nx/src/tasks-runner/task-orchestrator.ts @@ -144,7 +144,7 @@ export class TaskOrchestrator { task: Task; status: 'local-cache' | 'local-cache-kept-existing' | 'remote-cache'; }> { - const startTime = new Date().getTime(); + task.startTime = Date.now(); const cachedResult = await this.cache.get(task); if (!cachedResult || cachedResult.code !== 0) return null; @@ -155,6 +155,7 @@ export class TaskOrchestrator { if (shouldCopyOutputsFromCache) { await this.cache.copyFilesFromCache(task.hash, cachedResult, outputs); } + task.endTime = Date.now(); const status = cachedResult.remote ? 'remote-cache' : shouldCopyOutputsFromCache @@ -166,11 +167,7 @@ export class TaskOrchestrator { cachedResult.terminalOutput ); return { - task: { - ...task, - startTime, - endTime: Date.now(), - }, + task, status, }; }