Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

MerginProject may not get cleaned up properly

Offen
#149 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
api

Rechercherichtung

Beginne damit, die Erstellung von MerginProjects pygeodiff GeoDiff und die Einrichtung des Logger-Callbacks zu lokalisieren, und vergleiche dann den Cleanup-Fix in mergin-db-sync PR 79 mit dem zugehörigen geodiff issue 190. Als erledigt gilt die Aufgabe, wenn die wiederholte Erstellung von MerginProject die zyklischen Referenzen nicht mehr beibehält und keine Ressourcen anwachsen lässt, wobei die Bereinigung mit der Reproduktionsschleife überprüft wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

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)
Vorherrschende Sprache
Python
Sterne
23
Forks
12
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
7

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus MerginMaps/python-api-client

Alle Issues in MerginMaps/python-api-client

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.