Skip to content

Gate preflight: capture-drain race assumes classifier beats a 150 ms appender #937

Description

@ryanbreen

At revision 26893a4, the requested beast run of bash docker/qemu/run-x86-boot-tests.sh stopped before build/boot: 63/64 preflight suites passed; gate_capture_drain_structure failed its drain_disabled_reads_partial_drain_enabled_reads_complete_same_race test.

The assertion at tests/gate_capture_drain_structure.rs:410 expected capture=partial in the drain-disabled arm but observed capture=complete, seq=3, records=3, drain_ms=0. That arm starts a background appender after sleep 0.15 while the foreground starts the classifier. It assumes the classifier reads before the appender runs. Under host scheduling delay, the appender can win. Observed host load immediately afterward was 25.38/14.83/6.68. This suggests contention sensitivity; this was an assertion failure, not a suite timeout or a SCSI/IO failure.

The test and drain library are unchanged from the branch base 19427ef. The same A2 revision passed 64/64 preflight suites on the Mac. Do not weaken the partial-vs-complete assertion: replace the assumed wall-clock ordering with synchronization that proves the intended observation order while preserving the real drain-path check.

Evidence: docs/planning/green-program/ipc/serials/813-a2/x86-gate.log and x86-preflight-capture-drain.log. No x86 boot was reached in this attempt. The A2 task permits a retry for a contention timeout specifically; this assertion failure was retained without re-running the gate.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions