Flaky CI in `pkg/eventstreams`: webhook retry loop races test teardown (connection refused on localhost)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
Direzione di ricerca
Inizia in pkg/eventstreams eseguendo i relativi test con il race detector e analizzando l’esecuzione CI fallita di PR #234. Traccia Stop(), i worker di retry del webhook e i test flaky per verificare la cancellazione e il completamento dei worker prima dell’arresto del mock server. Il lavoro è completato quando i test del package passano in modo deterministico, con i worker arrestati prima del teardown e senza asserzioni sui retry sensibili al timing.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The Go CI job is intermittently failing in github.com/hyperledger-firefly/common/pkg/eventstreams due to a teardown race between webhook retry goroutines and test HTTP server shutdown.
- Failing job: https://github.com/hyperledger-firefly/common/actions/runs/29846418098/job/88688053787?pr=234
- PR: #234
- Package:
pkg/eventstreams - Ref seen in logs:
3abb2d84777e743eb570f1e560aab56b7317ea3b
Symptoms from logs
Repeated retry attempts continue dispatching PUT requests to a localhost mock endpoint after it is no longer accepting connections:
Put "http://127.0.0.1:45445/some/path": dial tcp 127.0.0.1:45445: connect: connection refusedBatch attempt N failed. err=FF00219: Webhook request failed ...- Stream lifecycle churn appears concurrently (
stopped,stopping,deleted,No in-memory state for stream ...)
The overall run fails with:
FAIL github.com/hyperledger-firefly/common/pkg/eventstreamsmake: *** [Makefile:15: test] Error 1
Expected behavior
Event stream tests should deterministically stop all dispatch/retry workers before teardown of test infrastructure (e.g., mock HTTP servers), so CI is stable.
Proposed fix
- Ensure stream stop is synchronous for tests (or provide a blocking test helper):
- cancel stream context
- wait for all worker goroutines to exit (
WaitGroup)
- In tests, stop stream before server shutdown:
require.NoError(t, es.Stop())beforesrv.Close()/ test exit
- Use deterministic retry config in tests:
- low max attempts (1–2)
- short backoff
- Assert on terminal error/state rather than timing-sensitive retry log counts.
Suggested implementation direction
- If
Stop()is currently non-blocking, make it block until all dispatch/retry loops terminate. - Ensure every worker loop exits on
ctx.Done()and decrementsWaitGroup. - Update flaky tests in
pkg/eventstreamsto enforce stop-before-close ordering.
Notes
This appears to be test flakiness/race behavior, not a product logic regression.
- Lingua principale
- Go
- Stelle
- 5
- Fork
- 15
- Merge medio
- 3g 9h
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di hyperledger-firefly/common
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
hyperledger-firefly/common#245 · 1 reazione ·
-
Map concurrency test failureAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
hyperledger-firefly/common#188 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
hyperledger-firefly/common#156 · 2 commenti ·
-
Intermittent test failureForse di nuovo libera @EnriqueL8 l’ha presa 903 giorni fa e non c’è nessuna pull request aperta. Aperta
hyperledger-firefly/common#136 · 1 assegnatario ·
-
Cache entries are not automatically reaped when they reach their TTLForse di nuovo libera @peterbroadhurst l’ha presa 1209 giorni fa e non c’è nessuna pull request aperta. Aperta
hyperledger-firefly/common#85 · 1 assegnatario ·
Tutte le issue di hyperledger-firefly/common
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Rafaeldelinares/gentle-mesh#125 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Gentleman-Programming/gentle-ai#5643 ·
I maintainer di solito rispondono entro 1 giorno
-
security
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
FootprintAI/Containarium#2869 ·
I maintainer di solito rispondono entro 1 giorno
-
kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
kubevirt/kubevirt#19559 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
bug raised-by:verifier
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
medici-finance/assay#3817 ·
I maintainer di solito rispondono entro 1 giorno