Repository navigation
Replies: 2 comments
TriageVerdict: a reproducible bug in the test, not in the App or in Is this a misuse of humus?No. The test is humus's own: the order status example's App test, added by #1066 for #1011. No end user owns it. The App does what the docs promise in both orders:
Is it a feature request?No. #1011's acceptance criteria ask for this test: "a retried record still waiting at SIGTERM is cut short when the grace period runs out. The App exits 1 with a A fix changes the test, not the API. Is it reproducible?Yes. I ran each test 4 times under
Each failing test asserts what app_test.go asserts, and fails with the CI's message: SIGTERM before the first Fetch: the App exits 0. The franz-go logs, captured with humustest's telemetry, in order:
order-1 has no status and nothing is committed on The first Fetch fails once: the App exits 0, with the test's own steps. The cluster closes the connection of the App's first Fetch, and touches nothing else:
Without control, the first Fetch wins. In the uncontrolled runs, 2 Fetches had reached the cluster by the time A second failure, not this one: a hang. One baseline run and one of the 69 package runs never ended. The test spun in its last The report says the window is between the assignment and the record reaching the projector. That's right. What makes the test pass is that the window usually closes before WhyThe test's only sync point before SIGTERM is
#1099 is filed to fix it:
|
|
Fixed in #1122, merged as 19b0dd7.
The triage's reproductions are now tests in |
Uh oh!
There was an error while loading. Please reload this page.
What happens
TestInit_cuts_short_a_retried_record_still_waiting_when_the_grace_period_runs_outinexample/orderstatus/appfails now and then. The App was stopped by SIGTERM while the test expected a retried record to be waiting out its 5m delay. The App exited 0 when it should have exited 1 with a*humus.GracePeriodError:It failed in both "Test (example/orderstatus)" and "Order status walkthrough (testcontainers)" in the merge-group run 39228587681 (go1.27.2, linux/amd64), and that run took #1079 out of the merge queue.
#1079 doesn't touch
example/orderstatus/app. The test passed on #1079's own CI, and on a re-queue the same change merged.It hasn't failed this way locally on
main(369613f) in about 1,800 runs, at-cpu=1,2and4:Why
This hasn't been triaged; the explanation below comes from reading the code.
app_test.go#L616-L621). After it, the test sends SIGTERM and expects the retried record to be in flight.Joinedmonitor (app.go#L122). It turns true when partitions are assigned (service.go#L562-L563), which happens before any record is fetched.Expected
The test sends SIGTERM only once the retried record is waiting out its delay, and passes every time under
-race -countat any-cpu.References
All reactions