From 848bea416b59a2f3880e973c0ec3b1f87424749d Mon Sep 17 00:00:00 2001 From: yoniebans Date: Tue, 1 Sep 2026 18:11:45 +0200 Subject: [PATCH] perf(install-e2e): fail the updater wait after 12 minutes without progress A working updater moves the checkout off the starting sha within its first minutes; a wedged one sits before its git step and emits nothing (buffered stdout, no exit), so only disk state can tell them apart early. Snapshot the sha when the wait starts and fail with the wedge diagnosis if it has not moved by 12 minutes, instead of waiting out the full bound. --- tests/install/windows-e2e.ps1 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/install/windows-e2e.ps1 b/tests/install/windows-e2e.ps1 index 2d845a3238..e5a2641414 100644 --- a/tests/install/windows-e2e.ps1 +++ b/tests/install/windows-e2e.ps1 @@ -758,12 +758,22 @@ function Invoke-GuiUpdateDesktopRoute([string]$TargetSha) { Write-Host " waiting for the detached updater to finish (up to 35 min) ..." $updateLog = Join-Path $HermesHome "logs\update.log" $updateLogPos = 0 + $startSha = "" + try { $startSha = Get-InstalledHead } catch {} $deadline = (Get-Date).AddMinutes(35) + # A working updater moves the checkout off the starting sha within its + # first minutes (git fetch/reset precedes the long venv + rebuild + # tail). No movement by this mark means the updater is wedged before + # its git step; waiting out the full bound adds nothing. + $progressDeadline = (Get-Date).AddMinutes(12) while ((Get-Date) -lt $deadline) { if (Test-Path -LiteralPath $resultPath) { break } $head = "" try { $head = Get-InstalledHead } catch {} if ($head -eq $TargetSha -and -not (Test-Path -LiteralPath $markerPath)) { break } + if ((Get-Date) -gt $progressDeadline -and $head -eq $startSha) { + Assert-True $false "updater made progress off $startSha within 12 minutes (wedged before its git step; on pre-#97052 releases this is the fork-upstream prompt hang)" + } # Tail any new update.log lines so the desktop-rebuild phase is # visible in the CI step output. if (Test-Path -LiteralPath $updateLog) {