Add longpoll provocation mode to the shutdown acceptance test#126
Merged
Conversation
…down path The shutdown acceptance test's default provocation faults handlers (/abend), which drives libc370's recovery-drain path -- not a worker parked in a long poll. The SA03 tracked in #122 (root cause mvsmf#179) needs a worker still in flight in a long poll when P HTTPD lands, a state a fast fault cannot create. A green default (abend) run therefore does not establish the mvsmf-side change. Add PROVOKE=longpoll: launch LONGPOLL_N concurrent blocking long-polls (LONGPOLL_CMD, e.g. an unsol-detect-sync console PUT), verify at least one is still parked LONGPOLL_SETTLE seconds later, then issue P HTTPD while they are in flight. Proof-of-scenario for this mode is the in-flight count, not a fault marker (a cleanly parked poll faults nothing); the address-space-end assertions are unchanged and shared between both modes. A cleanup trap kills any surviving long-polls on exit. Refs #122
The example LONGPOLL_CMD pointed at .../consoles/defcn/solmsgs, which is the
GET collect sub-resource, not the command-issue endpoint. The endpoint that
drives the unsol_sync poll loop is PUT /zosmf/restconsoles/consoles/{console-
name} (mvsmf.c add_route). A /solmsgs PUT would not match that route, so no
worker parks and the run reports INCONCLUSIVE rather than reproducing the
scenario. Drop the suffix; JSON keys verified against consoleIssueHandler.
Also document that the in-flight count is measured at settle time: in manual
stop mode the operator's reaction gap can exceed the poll timeout, so
unsol-detect-timeout must be set comfortably high (example raised to 60 s).
Refs #122
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.
Summary
Follow-up to #124 (merged): adds a
PROVOKE=longpollprovocation mode totests/shutdown-acceptance.shso the test actually exercises the parked-pollshutdown path — the one that produces the
SA03tracked in #122.Why
#124 added the abnormal-end assertions, but the default provocation cannot
reach that path.
PROVOKE=abendfaults handlers (/abend), which driveslibc370's recovery-drain path — not a worker parked in a long poll. The
SA03(root cause mvsmf#179) requires a worker still in flight in a long poll when
P HTTPDlands; a fast fault never parks one, and the fault-marker gate wouldreturn INCONCLUSIVE for a clean parked poll. So a green
abendrun does notestablish the mvsmf#179 fix.
Change
PROVOKE=longpoll: launchLONGPOLL_N(default 4) concurrent blockinglong-polls (
LONGPOLL_CMD, e.g. an unsol-detect-sync console PUT), verify ≥1is still parked
LONGPOLL_SETTLEs later, then issueP HTTPDwhile they arein flight.
(a cleanly parked poll faults nothing). The address-space-end assertions from
Assert normal address-space termination in the shutdown acceptance test #124 are shared, unchanged.
LONGPOLL_CMD.Acceptance
mvsmf#179 acceptance must use
PROVOKE=longpoll, not the defaultabend.Verification
sh -nclean. Exercised across both modes with synthetic fixtures: abend(
SA03+fault-marker → FAIL, clean → PASS, no-marker → INCONCLUSIVE) and longpoll(parked+clean → PASS, parked+
SA03→ FAIL, not-parked → INCONCLUSIVE). No strayprocesses left by the cleanup trap.
The
0x2Coffset mvsMF uses to read the quiesce flag has a durable-accessorfollow-up: #125.
Refs #122