Test fixtures must retain fake-worker faults during setup failures #154

Closed
opened 2026-10-13 10:10:25 -04:00 by dohertj2 · 1 comment
Owner

Gated multi-subscriber fixture setup can fail with a worker pipe disconnect while losing the fake worker exception needed to distinguish framing, fixture and transport failures.

Read-only investigation of retained nightly evidence: #142/run806 (4f931e4b7e) failed during Register inside WireUpAdviseAsync; #145/run823 and #146/run824 (f2e0861709) failed during AddItem. These failures preceded replay assertions, so they do not establish a sentinel-formula defect. Historical fake workers unconditionally cancelled framed reads after50ms even before Advise, plausibly matching the partial-frame mechanism reproduced and fixed in PR #153; historical attribution remains unproven because the worker-side fault was not recorded.

Current test-only gap at merged main d779daf6: GatewayEndToEndReconnectReplayTests uses NullLoggerFactory (the analogous multi-subscriber fixture warrants the same audit), observes WorkerTask only on the successful shutdown helper path, and does not retain/observe its fault during fixture teardown/setup failure. Existing retained-read regressions exercise watchGate=true; the pre-Advise watchGate=false branch should have direct segmented-frame coverage.

Bounded follow-up: capture bounded safe fake-worker fault diagnostics when setup fails and observe/drain the worker task during teardown without hiding the primary RPC/test failure or adding an unbounded wait. Add a deterministic injected worker-fault test plus a segmented pre-Advise frame held across the former50ms deadline. Preserve production behavior, every replay assertion, timeout budgets and the explicit shutdown path. Verify targeted/full tests and hosted CI before closing.

Parent #150 retains other unresolved historical host/resource/checkout/transport investigations. No remote host execution or production defect is asserted by this issue.

Gated multi-subscriber fixture setup can fail with a worker pipe disconnect while losing the fake worker exception needed to distinguish framing, fixture and transport failures. Read-only investigation of retained nightly evidence: #142/run806 (4f931e4b7e1cedb795635419a3142a0cbc15d8dd) failed during Register inside WireUpAdviseAsync; #145/run823 and #146/run824 (f2e0861709a5b817c10090bd934198c41d488ae7) failed during AddItem. These failures preceded replay assertions, so they do not establish a sentinel-formula defect. Historical fake workers unconditionally cancelled framed reads after50ms even before Advise, plausibly matching the partial-frame mechanism reproduced and fixed in PR #153; historical attribution remains unproven because the worker-side fault was not recorded. Current test-only gap at merged main d779daf6: GatewayEndToEndReconnectReplayTests uses NullLoggerFactory (the analogous multi-subscriber fixture warrants the same audit), observes WorkerTask only on the successful shutdown helper path, and does not retain/observe its fault during fixture teardown/setup failure. Existing retained-read regressions exercise watchGate=true; the pre-Advise watchGate=false branch should have direct segmented-frame coverage. Bounded follow-up: capture bounded safe fake-worker fault diagnostics when setup fails and observe/drain the worker task during teardown without hiding the primary RPC/test failure or adding an unbounded wait. Add a deterministic injected worker-fault test plus a segmented pre-Advise frame held across the former50ms deadline. Preserve production behavior, every replay assertion, timeout budgets and the explicit shutdown path. Verify targeted/full tests and hosted CI before closing. Parent #150 retains other unresolved historical host/resource/checkout/transport investigations. No remote host execution or production defect is asserted by this issue.
Author
Owner

Merged PR #155 as 6fc423f608 after independent review, 16 targeted tests and 1,203 full Gateway tests passed with zero failures/warnings. Hosted runs 971 and 972 passed portable, Java and Windows x86 jobs; scheduled nightly job correctly skipped. Merged source tree exactly matches tested commit 83aa76c33d. Test-only diagnostics retain original worker faults safely and observe teardown without masking primary failures; deterministic injected-fault/framing regressions verified RED then GREEN. Closing #154. Historical CI cause #150 remains open.

Merged PR #155 as 6fc423f6087d334649e107244b79408a1c1f10a1 after independent review, 16 targeted tests and 1,203 full Gateway tests passed with zero failures/warnings. Hosted runs 971 and 972 passed portable, Java and Windows x86 jobs; scheduled nightly job correctly skipped. Merged source tree exactly matches tested commit 83aa76c33dca1a30045c1a0c2b40be10b705e3b0. Test-only diagnostics retain original worker faults safely and observe teardown without masking primary failures; deterministic injected-fault/framing regressions verified RED then GREEN. Closing #154. Historical CI cause #150 remains open.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/mxaccessgw#154