Using Doctrine entities as Module arguments causes memory leaks
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 45/100
- Type d'issue
- Documentation
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- php
- Domaine
- databases, documentation
Piste de recherche
Commencez par localiser la documentation du module Doctrine et la section décrivant les arguments des méthodes du module ou la configuration des fixtures. Ajoutez un avertissement indiquant que les entités Doctrine peuvent conserver des collections persistantes et des Entity Managers lorsqu’elles sont stockées comme arguments, et recommandez d’utiliser des données scalaires lorsque cela est approprié ; la tâche est considérée comme terminée lorsque ces indications sont clairement documentées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Background:
We have a fairly big project using Codeception. Recently, the memory usage during tests reached around ~2 GB of memory, resulting in exceeding the limit on CI test runs.
We have managed to pin down the issue to the fact that we were using Doctrine entities as arguments in a lot of module methods when creating fixture data.
The problem stems from persistent collections - all of them have Entity Manager injected into them and Codeception stores all arguments used in module methods. This caused the old instances of entity manager service not being cleared up and memory usage steadily piling up.
We were not using the Doctrine module, since it was too troublesome due to the persistent EntityManager service.
Solution:
The only way to correctly resolve it was to use scalar data instead of full entities. This has drastically reduced memory usage.
This is not something that I would expect the Codeception team to resolve, but I think that in the section of the Doctrine module you could provide a paragraph or two warning people about this issue. It can save someone folks a lot of work.
Cheers
- Langage dominant
- PHP
- Étoiles
- 4
- Forks
- 2
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Codeception/module-doctrine
-
Difficulté 3/5 1-2 jours Accessibilité débutants 38/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
Codeception/module-doctrine#2 · 1 commentaire · 1 réaction ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 42/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 64/100
Codeception/module-doctrine#6 · 1 commentaire ·
Toutes les issues de Codeception/module-doctrine
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Leaked Sensitive InformationOuverte
Difficulté 2/5 Moins d'une heure Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
customer-support needs-triage Platform(Default)
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
grokability/snipe-it#19767 ·
Les mainteneurs répondent en général sous 1 jour