MerginProject may not get cleaned up properly
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez par localiser la création de GeoDiff de pygeodiff de MerginProject et la configuration du callback du logger, puis comparez le correctif de nettoyage dans mergin-db-sync PR 79 avec le geodiff issue 190 associé. Le travail est terminé lorsque la création répétée de MerginProject ne conserve plus les références cycliques et ne fait plus croître les ressources, en utilisant la boucle de reproduction pour vérifier le nettoyage.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When MerginProject is created, it creates geodiff object and assigns an internal logger to geodiff. This creates a cyclic reference (pygeodiff refs MerginProject, and MerginProject refs pygeodiff) that may keep resources held, which may be a problem if MerginProject object is created many times. See also fix for this in db-sync: https://github.com/MerginMaps/mergin-db-sync/pull/79
Also somehow related: https://github.com/MerginMaps/geodiff/issues/190
Code snippet to replicate the cleanup issue:
import pygeodiff
class MerginProjectX:
def __init__(self, directory):
def _logger_callback(level, text_bytes):
self.x() # not a real function, but refs this object...
self.geodiff = pygeodiff.GeoDiff()
self.geodiff.set_logger_callback(_logger_callback)
# this will keep consuming more and more resources
for i in range(50000):
print(i)
mp = MerginProjectX("x")
#mp.geodiff = None # this helps to break ref cycle
time.sleep(0.005)
- Langage dominant
- Python
- Étoiles
- 23
- Forks
- 12
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 7
Guide de contribution
Ouvrir le guide de contribution
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 MerginMaps/python-api-client
-
Vacuuming Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
MerginMaps/python-api-client#320 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
MerginMaps/python-api-client#270 ·
-
Migration tool between servers Ouverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
MerginMaps/python-api-client#257 · 3 commentaires ·
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
MerginMaps/python-api-client#254 · 1 commentaire ·
-
Impose geodiff push limits Ouverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
MerginMaps/python-api-client#245 ·
Toutes les issues de MerginMaps/python-api-client
Issues similaires
-
货币战争手改优先级配置缺少列表元素类型校验(P3) Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
syfoud/Simulated_Scepter#172 ·
-
A cancelled tests run makes the coverage comment workflow fail and reports it as a red check on main Ouvertearea: ci bug perceived difficulty: 3
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Nitjsefnie-Harness-Commons/daedalus#921 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
EleutherAI/lm-evaluation-harness#4207 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
ClickHouse/clickhouse-connect#1057 ·