From 163585c7adc1ebccede96f9cbaaaafd03b75121e Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 30 Jan 2026 14:23:50 +0800 Subject: [PATCH 1/6] eng, fix compare script, handle timeout --- eng/scripts/Compare-CurrentToCodegeneration.ps1 | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/eng/scripts/Compare-CurrentToCodegeneration.ps1 b/eng/scripts/Compare-CurrentToCodegeneration.ps1 index b4893bb8745f..0775aaf7fec2 100644 --- a/eng/scripts/Compare-CurrentToCodegeneration.ps1 +++ b/eng/scripts/Compare-CurrentToCodegeneration.ps1 @@ -208,7 +208,14 @@ $generateScript = { } # Timeout is set to 60 seconds per script. -$timeout = 60 * $generationInformations.Count +$scriptTimeoutInSeconds = 60 +$timeout = $scriptTimeoutInSeconds * $generationInformations.Count +# Ensure a minimum timeout of 5 times the script timeout +# This is for scenarios where there are only a few scripts to run. One with large TypeSpec source can get a few minutes. +$minimumTimeout = 5 * $scriptTimeoutInSeconds +if ($timeout -lt $minimumTimeout) { + $timeout = $minimumTimeout +} $job = $generationInformations | ForEach-Object -Parallel $generateScript -ThrottleLimit $Parallelization -AsJob @@ -216,8 +223,14 @@ $job = $generationInformations | ForEach-Object -Parallel $generateScript -Throt $job | Wait-Job -Timeout $timeout | Out-Null $job | Receive-Job 2>$null | Out-Null +$jobTimeout = $job.State -eq 'Running' +if ($jobTimeout) { + Write-Host "The aggregated generate jobs timed out after $timeout seconds." + Stop-Job $job | Out-Null +} + # Clean up generated code, so that next step will not be affected. git reset --hard | Out-Null git clean -fd . | Out-Null -exit $job.State -eq 'Failed' +exit $job.State -eq 'Failed' -or $jobTimeout From 9088ff79b2418fbb3cc59140913e2e8db2d15533 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 30 Jan 2026 14:26:34 +0800 Subject: [PATCH 2/6] nit --- eng/scripts/Compare-CurrentToCodegeneration.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/scripts/Compare-CurrentToCodegeneration.ps1 b/eng/scripts/Compare-CurrentToCodegeneration.ps1 index 0775aaf7fec2..31b9d9bef696 100644 --- a/eng/scripts/Compare-CurrentToCodegeneration.ps1 +++ b/eng/scripts/Compare-CurrentToCodegeneration.ps1 @@ -225,7 +225,7 @@ $job | Receive-Job 2>$null | Out-Null $jobTimeout = $job.State -eq 'Running' if ($jobTimeout) { - Write-Host "The aggregated generate jobs timed out after $timeout seconds." + Write-Host "The aggregated generate job timed out after $timeout seconds." Stop-Job $job | Out-Null } From 01219bab8162a1bf5c562564c53da66025a204c3 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 30 Jan 2026 14:30:46 +0800 Subject: [PATCH 3/6] Update Compare-CurrentToCodegeneration.ps1 --- eng/scripts/Compare-CurrentToCodegeneration.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/scripts/Compare-CurrentToCodegeneration.ps1 b/eng/scripts/Compare-CurrentToCodegeneration.ps1 index 31b9d9bef696..5a2e0aa3ed04 100644 --- a/eng/scripts/Compare-CurrentToCodegeneration.ps1 +++ b/eng/scripts/Compare-CurrentToCodegeneration.ps1 @@ -211,7 +211,7 @@ $generateScript = { $scriptTimeoutInSeconds = 60 $timeout = $scriptTimeoutInSeconds * $generationInformations.Count # Ensure a minimum timeout of 5 times the script timeout -# This is for scenarios where there are only a few scripts to run. One with large TypeSpec source can get a few minutes. +# This is for scenarios where there are only a few scripts to run. Some script with large TypeSpec source can take a few minutes. $minimumTimeout = 5 * $scriptTimeoutInSeconds if ($timeout -lt $minimumTimeout) { $timeout = $minimumTimeout From 3fb6af8c433ecc2dcfc23c1df8e3d0c99dfe4f2b Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 30 Jan 2026 14:31:26 +0800 Subject: [PATCH 4/6] Update eng/scripts/Compare-CurrentToCodegeneration.ps1 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- eng/scripts/Compare-CurrentToCodegeneration.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/scripts/Compare-CurrentToCodegeneration.ps1 b/eng/scripts/Compare-CurrentToCodegeneration.ps1 index 5a2e0aa3ed04..b8aa336c7198 100644 --- a/eng/scripts/Compare-CurrentToCodegeneration.ps1 +++ b/eng/scripts/Compare-CurrentToCodegeneration.ps1 @@ -228,6 +228,7 @@ if ($jobTimeout) { Write-Host "The aggregated generate job timed out after $timeout seconds." Stop-Job $job | Out-Null } +Remove-Job $job | Out-Null # Clean up generated code, so that next step will not be affected. git reset --hard | Out-Null From 88b13eb48e8093dbee050bf081c20668b5f57731 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 30 Jan 2026 14:33:27 +0800 Subject: [PATCH 5/6] add jobFailed before Remove-Job --- eng/scripts/Compare-CurrentToCodegeneration.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/scripts/Compare-CurrentToCodegeneration.ps1 b/eng/scripts/Compare-CurrentToCodegeneration.ps1 index b8aa336c7198..81b962588292 100644 --- a/eng/scripts/Compare-CurrentToCodegeneration.ps1 +++ b/eng/scripts/Compare-CurrentToCodegeneration.ps1 @@ -224,6 +224,7 @@ $job | Wait-Job -Timeout $timeout | Out-Null $job | Receive-Job 2>$null | Out-Null $jobTimeout = $job.State -eq 'Running' +$jobFailed = $job.State -eq 'Failed' if ($jobTimeout) { Write-Host "The aggregated generate job timed out after $timeout seconds." Stop-Job $job | Out-Null @@ -234,4 +235,4 @@ Remove-Job $job | Out-Null git reset --hard | Out-Null git clean -fd . | Out-Null -exit $job.State -eq 'Failed' -or $jobTimeout +exit $jobFailed -or $jobTimeout From 84f16604ee1a6af72746ac99d1866984d23489ca Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 30 Jan 2026 14:42:41 +0800 Subject: [PATCH 6/6] delete stop-job and remove-job --- eng/scripts/Compare-CurrentToCodegeneration.ps1 | 2 -- 1 file changed, 2 deletions(-) diff --git a/eng/scripts/Compare-CurrentToCodegeneration.ps1 b/eng/scripts/Compare-CurrentToCodegeneration.ps1 index 81b962588292..683abf7eb841 100644 --- a/eng/scripts/Compare-CurrentToCodegeneration.ps1 +++ b/eng/scripts/Compare-CurrentToCodegeneration.ps1 @@ -227,9 +227,7 @@ $jobTimeout = $job.State -eq 'Running' $jobFailed = $job.State -eq 'Failed' if ($jobTimeout) { Write-Host "The aggregated generate job timed out after $timeout seconds." - Stop-Job $job | Out-Null } -Remove-Job $job | Out-Null # Clean up generated code, so that next step will not be affected. git reset --hard | Out-Null