diff -r 518c3e392f75 -r 14e683d6b273 mercurial/transaction.py --- a/mercurial/transaction.py Sat Apr 16 09:00:15 2016 -0700 +++ b/mercurial/transaction.py Sat Apr 16 09:02:37 2016 -0700 @@ -431,6 +431,8 @@ categories = sorted(self._finalizecallback) for cat in categories: self._finalizecallback[cat](self) + # Prevent double usage and help clear cycles. + self._finalizecallback = None self._generatefiles(group=GenerationGroup.POSTFINALIZE) self.count -= 1 @@ -486,6 +488,8 @@ categories = sorted(self._postclosecallback) for cat in categories: self._postclosecallback[cat](self) + # Prevent double usage and help clear cycles. + self._postclosecallback = None @active def abort(self): @@ -539,6 +543,8 @@ try: for cat in sorted(self._abortcallback): self._abortcallback[cat](self) + # Prevent double usage and help clear cycles. + self._abortcallback = None _playback(self.journal, self.report, self.opener, self._vfsmap, self.entries, self._backupentries, False) self.report(_("rollback completed\n"))