Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Two @tanstack/db tests time out under CPU load because a cold module import counts against the 5 s default timeout

Ouverte Adaptée aux débutants
#2,238 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
82/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
testing

Piste de recherche

Lis packages/db/tests/mutation-id.test.ts et packages/db/tests/collection-idle-cleanup.test.ts, puis exécute la commande Vitest pour ces deux fichiers depuis packages/db sous charge CPU afin de confirmer les timeouts. Vérifie comment chaque test importe le graphe de modules de Collection et gère la configuration ; le scheduler de nettoyage en période d’inactivité doit être installé avant l’import de son polyfill. La tâche est terminée lorsque les deux tests réussissent de manière fiable sous charge, sans affaiblir leurs assertions.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Two @tanstack/db tests fail with Test timed out in 5000ms when the machine is busy. They pass when the suite runs alone.

Tests

  • packages/db/tests/mutation-id.test.ts > mutation ids > do not draw random values during module evaluation
  • packages/db/tests/collection-idle-cleanup.test.ts > cancels a rescheduled idle cleanup when a subscriber returns

Reproduction

Run the two files while other test processes load the CPU. I ran them while four other vitest run processes ran the full @tanstack/db suite on an 18-core machine:

cd packages/db
npx vitest run tests/mutation-id.test.ts tests/collection-idle-cleanup.test.ts

Result over four runs:

Run mutation-id collection-idle-cleanup
1 timed out (5005 ms) timed out (5014 ms)
2 timed out (5003 ms) timed out (5004 ms)
3 timed out (5004 ms) timed out (5004 ms)
4 timed out (5004 ms) passed

Without the other processes, the full suite passes (285 files, 13,816 tests).

Probable cause

Each test starts with a cold dynamic import() of the Collection module graph inside the test body:

  • mutation-id.test.ts calls vi.resetModules() and then imports ../src/collection/index.js and ../src/local-only.js.
  • collection-idle-cleanup.test.ts imports ../src/collection/index.js and ../src/utils/browser-polyfills.js, because it must install its idle scheduler before the polyfill module loads.

The transform and load of that graph count against the test's 5000 ms default timeout. Under CPU load, the import alone can use the full budget. The work after the import takes a few milliseconds, plus an 80 ms wait in the idle-cleanup test.

I did not measure the import time separately, so this cause is probable, not proven.

Effect

  • A slow or shared CI runner can fail these tests for no product reason.
  • Tools that run the suite in parallel, such as mutation sweeps, record false failures. Both tests made a mutation sweep report every mutant as killed.

Possible fixes

  • Give each test an explicit timeout that covers a cold import, for example 30_000.
  • Or move the import out of the timed test body where the test's isolation requirement allows it. The idle-cleanup test needs its scheduler installed before the polyfill module loads, so its import must stay after that setup.
Langage dominant
TypeScript
Étoiles
4k
Forks
277
Merge moyen
17 h 40 min
PR mergées (30 j)
223

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de TanStack/db

Toutes les issues de TanStack/db

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.