Stage-Dispatcher: re-register RunOnce BEFORE calling Run-ShopfloorSetup
Setup chains we do not control (FormTracePak Setup.exe, eDNC MSI, any vendor installer that forces an immediate reboot) cut & $script off mid-flight. Without this, the dispatcher never returns from the call and the post-call Register-NextRun never fires, leaving the next boot with no RunOnce + a stalled imaging chain. Observed today on WJF00159 where the FormTracePak v6.213 Setup.exe rebooted the bay before the dispatcher could advance the stage. Register the dispatcher's own RunOnce defensively before invoking the sub-script. If a reboot interrupts the call, the next boot re-fires the same dispatcher, which re-reads the still-'shopfloor-setup' stage file, re-runs Run-ShopfloorSetup (every step is idempotent + detects already- installed state), and converges. The existing post-call Register-NextRun + stage advance still run on the happy path - cheap, idempotent. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -86,6 +86,20 @@ switch ($stage) {
|
||||
break
|
||||
}
|
||||
|
||||
# Defensive: re-register RunOnce BEFORE calling Run-ShopfloorSetup.
|
||||
# Setup chains we don't control (FormTracePak Setup.exe, eDNC MSI,
|
||||
# any vendor installer that forces an immediate reboot) can cut
|
||||
# the script off mid-flight. Without this, the dispatcher never
|
||||
# returns from & $script and the post-call Register-NextRun never
|
||||
# fires, leaving the next boot with no RunOnce + a stalled image.
|
||||
# With this defensive register the next boot re-fires the same
|
||||
# dispatcher, which re-reads the still-'shopfloor-setup' stage
|
||||
# file, re-runs Run-ShopfloorSetup (every step is idempotent +
|
||||
# detects already-installed state), and converges. Once
|
||||
# Run-ShopfloorSetup returns normally we re-register again below
|
||||
# before advancing to the next stage - cheap, idempotent.
|
||||
Register-NextRun
|
||||
|
||||
# -FromDispatcher bypasses the stage-file gate at the top of
|
||||
# Run-ShopfloorSetup (which would otherwise see the stage file
|
||||
# and exit immediately thinking it should defer to us).
|
||||
|
||||
Reference in New Issue
Block a user