MerginProject may not get cleaned up properly
まだ誰も着手していません。
評価
調査の方向性
まず、MerginProject の pygeodiff GeoDiff の作成と logger-callback の設定箇所を探し、次に mergin-db-sync PR 79 のクリーンアップ修正と関連する geodiff issue 190 を比較します。MerginProject を繰り返し作成しても循環参照が保持されず、リソースも増加しなくなり、再現ループを使ってクリーンアップを検証できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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)
- 主要言語
- Python
- スター
- 23
- フォーク
- 12
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 7
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
MerginMaps/python-api-client のほかの issue
-
Vacuuming オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
MerginMaps/python-api-client#320 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
MerginMaps/python-api-client#270 ·
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
MerginMaps/python-api-client#257 · コメント 3 件 ·
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
MerginMaps/python-api-client#254 · コメント 1 件 ·
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
MerginMaps/python-api-client#245 ·
MerginMaps/python-api-client の issue をすべて見る
似ている issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
canonical/paas-charm#368 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
tech debt
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
StevenBlack/hosts#3256 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
qualcomm/qai-appbuilder#275 ·