Skip to content

a worker was handed no note at all under a loaded full-tree run #1375

Description

@santoshkumarradha

What happened

TestTwoWorkersLiveAtOnceEachGetOnlyItsOwnNote in internal/run failed once,
inside a run of 112 packages at once on a loaded build box.

--- FAIL: TestTwoWorkersLiveAtOnceEachGetOnlyItsOwnNote (0.66s)
    note_channel_test.go:326: alpha was handed its own note 0 times, want once
FAIL	github.com/Agent-Field/codeaf/internal/run	29.998s

The dump the assertion prints shows three requests to alpha, each carrying the
work order and the ask, and none of them carrying the note. So the note was not
delivered late or delivered to the wrong worker in that run. It was not there at
all across every request the worker made.

It does not reproduce, and that is the report

Sixteen attempts on the same tree at the same commit, on a box at load 0.33:

what result
-count=5 -run TestTwoWorkersLiveAtOnce ./internal/run/ ok 2.758s
-count=3 ./internal/run/ (whole package, so the other tests run beside it) ok 75.353s
GOMAXPROCS=1 -count=8 -run TestTwoWorkersLiveAtOnce ./internal/run/ ok 4.151s

Filing rather than rerunning is deliberate. The repository's own rule is that a
test failing only when other suites run beside it is a bug report and not a
known shape, and this test is about two workers being live at once, which is the
condition a loaded box actually supplies and an isolated rerun does not.

It is NOT in .github/known-red.txt and must not be added to it.

Why it matters more than an ordinary flake

The behaviour under test is the one #1356 shipped: a note is a channel into a
running worker rather than a log nobody reads. A worker that never receives its
note is that feature not working, and the failing case renders exactly like a
run where nobody sent a note. If this is real, the product symptom is silence.

Replication

Not reliable. What produced it once: go test -count=1 over every package
except internal/tui3 and internal/session on one box, roughly 112 packages,
during a full-tree check. The commit was 2f94ca1f0.

Acceptance

  1. Whatever the cause, the test's failure output says which of the two workers
    got which notes and when, not only that alpha got none. The current dump
    shows the requests but not the delivery decisions, so a reader cannot tell a
    note that was never written from one written to the wrong worker.
  2. If it is a race in the runtime, -race on this package in CI names it.
  3. If it is a race in the fixture, the fixture is fixed, and the change says
    which of the two it was. Not "made deterministic".

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions