# HG changeset patch # User Gregory Szorc # Date 1400720555 25200 # Node ID 99ba1d082287e5d701c86dfea7e7a5f9adc9dad4 # Parent 3cb2da25b1713b0da0fde70f6af312d7b7cf987b localrepo: prevent leak of transaction object (issue4258) The onclose() closure added in cd443c7589cc held a regular reference to the transaction object. This was causing the transaction to not gc and a leak to occur. The closure now holds a reference to the weakref instance and the leak goes away. diff -r 3cb2da25b171 -r 99ba1d082287 mercurial/localrepo.py --- a/mercurial/localrepo.py Thu May 22 01:49:12 2014 -0700 +++ b/mercurial/localrepo.py Wed May 21 18:02:35 2014 -0700 @@ -858,7 +858,7 @@ _("abandoned transaction found - run hg recover")) def onclose(): - self.store.write(tr) + self.store.write(self._transref()) self._writejournal(desc) renames = [(vfs, x, undoname(x)) for vfs, x in self._journalfiles()]