Repository navigation
test(e2e): the dead-peers ceiling asks a starvation witness before blaming the launcher - #1740
Merged
Merged
Conversation
…aming the launcher (#1739) A never-accepting leg over its (2N - 1/2) x TOTAL ceiling cannot say whether the host stalled or the launcher doubled its deadline: 8132 ms was reported on a loaded runner, past the 8000 ms a doubled deadline reports. The ceiling stays as it is. Both fixtures that hold that ceiling now run a starvation witness beside the leg: compile-cache-e2e.sh a perl ticker (e2e_starvation_witness in e2e-common.sh), and run-launcher-e2e.ps1 a Stopwatch ticker on a runspace of its own (scripts/lib/E2EStarvationWitness.psm1). Each requests 20 ms sleeps and sums only how far a wake-up was late by MORE than a 50 ms stall threshold. Raw lateness would measure the timer instead: on an idle host Git Bash's perl is late 2546-2598 ms over 8 s and pwsh 2924-3221 ms, either of which would excuse a doubled deadline outright; the stalled figure is 0 under perl, WSL and pwsh. The witness stops once the launcher prints its fall-back line, so its window is the cache phase rather than the compile after it. The pure verdict (e2e_dead_ceiling_verdict, Get-E2EDeadCeilingVerdict) answers one of three outcomes: pass (within the ceiling), inconclusive (stalled >= overrun: printed, annotated on CI, repeated at the run's end, not failed) and fail (a host that did not stall that long, or a witness that left no reading, which fails closed). The PowerShell verdict and witness have their own cases, registered as launcher-e2e-starvation-witness-selftest. Closes #1739. Signed-off-by: Christian Parpart <c.parpart@lastrada.net>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1739.
Why
The dead-peers
never-acceptingleg holds the launcher's reported cache time to a ceiling of(2N - 1/2) x TOTAL, which is 7000 ms. On loaded Windows runners it reported 7602 ms (in #1737) and 8132 ms (on master). 8132 is past the 8000 ms that a launcher which doubled its deadline reports, so time alone cannot tell a stalled host from a real regression. Raising the ceiling would stop it catching a doubled deadline.What
compile-cache-e2e.sh(POSIX) uses a perl ticker;run-launcher-e2e.ps1(which is what ctest runs on Windows) uses a Stopwatch ticker on its own runspace.e2e_dead_ceiling_verdictin bash andGet-E2EDeadCeilingVerdictin pwsh:::warning::annotation, and repeated at the end of the run. The run does not fail;e2e-helpers-selftest, and the pwsh verdict and witness have the newlauncher-e2e-starvation-witness-selftest. A pwsh case asserts that the 20 ms and 50 ms constants match across the two languages.Blind spots (stated in both files)
inconclusivewarning on a passing run reaches GitHub only from the jobs that run the fixtures directly.Tested
check-e2e-helpers.shran 1147 checks, 0 failed (WSL);-SelfTestPortsran 47.run-launcher-e2e.ps1ran on Windows (cl and clang-cl). The never-accepting leg passed with 0 ms stalled, and the witness closed at the end of the cache phase.