Skip to content

Widen retry window for salt-minion service re-registration race - #70014

Open
twangboy wants to merge 1 commit into
saltstack:3006.xfrom
twangboy:fix_nsis
Open

Widen retry window for salt-minion service re-registration race#70014
twangboy wants to merge 1 commit into
saltstack:3006.xfrom
twangboy:fix_nsis

Conversation

@twangboy

Copy link
Copy Markdown
Contributor

What does this PR do?

The NSIS stress tests still hit intermittent installer Abort (exit code 2) after the previous retry fix, on both 3006.x and 3007.x. Timing recovered from the CI logs shows the SCM held the salt-minion service key for 25s+ before the uninstall side's own wait_svc_deleted loop and the test harness's post-uninstall wait both gave up, leaving only ~10s of retry budget on the install side before it aborted -- not enough headroom for the observed delay. Wait for the salt-minion service registry key to disappear before even attempting "ssm install" (CreateService), instead of only reacting after CreateService fails. This is a no-op on a normal install, since the key was never present. Also widen the existing retry budgets: the install-side CreateService retry from 5x2s to 10x2s, and the uninstall-side wait_svc_deleted from 10s to 15s.

Add diagnostics so future occurrences don't require a fresh repro: print the tail of the relevant %TEMP%\SaltInstaller*.log directly into the pytest failure output on any non-zero exit or timeout, and upload the full log directory as a CI artifact from both the Logic Tests and Stress Tests jobs.

Merge requirements satisfied?

[NOTICE] Bug fixes or features added to Salt require tests.

Commits signed with GPG?

Yes/No

The NSIS stress tests still hit intermittent installer Abort (exit
code 2) after the previous retry fix, on both 3006.x and 3007.x.
Timing recovered from the CI logs shows the SCM held the
salt-minion service key for 25s+ before the uninstall side's own
wait_svc_deleted loop and the test harness's post-uninstall wait
both gave up, leaving only ~10s of retry budget on the install side
before it aborted -- not enough headroom for the observed delay.
Wait for the salt-minion service registry key to disappear before
even attempting "ssm install" (CreateService), instead of only
reacting after CreateService fails. This is a no-op on a normal
install, since the key was never present. Also widen the existing
retry budgets: the install-side CreateService retry from 5x2s to
10x2s, and the uninstall-side wait_svc_deleted from 10s to 15s.

Add diagnostics so future occurrences don't require a fresh
repro: print the tail of the relevant %TEMP%\SaltInstaller\*.log
directly into the pytest failure output on any non-zero exit or
timeout, and upload the full log directory as a CI artifact from
both the Logic Tests and Stress Tests jobs.
@twangboy
twangboy requested a review from a team as a code owner August 11, 2026 21:03
@twangboy twangboy self-assigned this Aug 12, 2026
@twangboy twangboy added the test:full Run the full test suite label Aug 12, 2026
@twangboy twangboy added this to the Sulphur v3006.28 milestone Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:full Run the full test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant