Skip to content

Nettoyer l'intervalle de purge des requêtes orphelines #84

@ormidales

Description

@ormidales

Contexte

L'extension maintient un suivi des requêtes initiales via une Map en mémoire, et exécute une fonction cleanupStaleTrackedRequests régulièrement.

Problème

La fonction setInterval est appelée au niveau global de background.js sans conserver son identifiant. Bien que cela fonctionne dans un environnement persistant, les cycles de vie modernes d'extensions (suspend/resume) peuvent amener le script à se recharger partiellement, multipliant silencieusement les boucles d'intervalle et provoquant une fuite de mémoire.

Scénario de Reproduction

  1. Recharger le script d'arrière-plan plusieurs fois d'affilée sans réinitialiser le contexte global.
  2. Monitorer les performances du worker.
  3. Constater l'exécution multiple et superflue de la fonction de nettoyage chaque minute.

Comportement Attendu

Il ne doit y avoir qu'une seule instance de la boucle de nettoyage en cours d'exécution.

Pistes Techniques

Fichier background.js :
Conserver la référence de l'intervalle et la nettoyer avant de la recréer, ou lier le nettoyage aux événements de cycle de vie de l'extension.

if (globalThis.cleanupIntervalId) {
  clearInterval(globalThis.cleanupIntervalId);
}
globalThis.cleanupIntervalId = setInterval(cleanupStaleTrackedRequests, REQUEST_TRACK_TTL_MS);

Environnement

Service Worker / Background Script.

Metadata

Metadata

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions