Skip to content

test(aws): distinguish pre-write aborts during fixture cleanup #417

Open

Description

@cristim

Summary: refine failure diagnostics in the test-only scheduled CE loopback fixture without synthesizing write completion.

Current behavior: at ca292727699ff340c8a3eaaa5d51bd7e3607db28, providers/aws/ladder/ce_loopback_body_test.go:323-338 waits for both handler completion and the real WroteRequest callback during cleanup. A pre-write dial error or request rejection starts neither. The primary request error is preserved, but cleanup adds two watchdog errors and about ten seconds of waiting. The ordinary success path passes, including required Linux CI and post-merge verification. Independent race probes found no lasting leak or race in the two reported failure paths.

Steps to reproduce: in an isolated scratch copy, either make the fixture DialContext return a synthetic error or force the inner request guard at line343 to reject. Run the public baseline regression under the race detector. Both probes should compile, fail with their primary error and also report the secondary completion watchdogs. Restore the scratch source afterwards.

Expected behavior: a failed request should retain its actual primary error while cleanup distinguishes operations that never started from operations requiring a real completion join.

Proposed fix: define and test the minimal abort-state contract around the fixture cleanup and callback registration in providers/aws/ladder/ce_loopback_body_test.go:314-359. Preserve real success-path write completion. Do not close the write channel through writeOnce merely to satisfy cleanup, because that could suppress a later actual callback and its error. Verify dial failure, guard rejection and the existing successful terminal-write schedule under the race detector.

References: #414, #415, review5534325003 and the independent triage. This is separate from vendor-runtime investigation #416 and does not require real cloud access.

Severity: low. Impact: internal failed-test diagnostics only. Priority: P3, eventually. Effort: small.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions