🤖 tests: eventLoopYielder "yield lets due timers run" flakes on a stalled runner
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
- Ambito
- testing
Direzione di ricerca
Inizia da src/node/utils/concurrency/eventLoopYielder.test.ts, dal test «yield lets due timers run once the budget is used» e dalla sua asserzione alla riga 19, expect(yielder.isDue()).toBe(false). Leggi EventLoopYielder per capire come viene azzerato lastYieldAt in yield(). Rendi deterministico il controllo del ripristino, simulando performance.now oppure rimuovendo l'asserzione basata sul tempo reale. È fatto quando il test passa ripetutamente sotto limitazione della CPU e l'asserzione sul timer continua a coprire il contratto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
src/node/utils/concurrency/eventLoopYielder.test.ts › "yield lets due timers run once the budget is used" failed in the merge queue and dropped #6804 (run 38777134519, job 116567701971, Test / Unit (3/6)):
expect(yielder.isDue()).toBe(false) // line 19
Expected: false
Received: true
Cause (from the code): the test uses a 5 ms budget (new EventLoopYielder(5)). After await yielder.yield() resets lastYieldAt, a stall of 5 ms or more before the next line (CPU quota throttling on a shared runner) makes isDue() true again. The last assertion checks wall time, not the contract.
Fix: check the reset without a wall-clock race, for example by comparing isDue() right after yield() with a fake performance.now, or by dropping the last assertion (the timer assertion already pins the contract).
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high
- Lingua principale
- TypeScript
- Stelle
- 2.1k
- Fork
- 142
- Merge medio
- 4h 59m
- PR unite (30g)
- 902
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna 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 coder/xum
-
tech-debt
Difficoltà 2/5 Mezza giornata Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
approved backlog
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
approved backlog
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
simkimsia/netlify-axi#19 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
subhranshudash13-dotcom/Contribo#74 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement frontend good first issue Stellar Wave trivial
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Godgift-care/sci-healthcare-frontend#166 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
backend good first issue security Stellar Wave trivial
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Godgift-care/sci-healthcare-backend#171 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno