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
- Recharger le script d'arrière-plan plusieurs fois d'affilée sans réinitialiser le contexte global.
- Monitorer les performances du worker.
- 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.
Contexte
L'extension maintient un suivi des requêtes initiales via une
Mapen mémoire, et exécute une fonctioncleanupStaleTrackedRequestsrégulièrement.Problème
La fonction
setIntervalest appelée au niveau global debackground.jssans 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
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.
Environnement
Service Worker / Background Script.