Mon, 29 May 2017 05:58:08 -0700 copies: rename getfctx to getsrcfctx
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:58:08 -0700] rev 32597
copies: rename getfctx to getsrcfctx In the next patch we'll use getdstfctx. Let's rename getfctx to getsrcfctx in this patch.
Mon, 29 May 2017 05:57:25 -0700 copies: remove msrc and mdst parameters
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:57:25 -0700] rev 32596
copies: remove msrc and mdst parameters This function already has lots of parameters. And we can get manifests from contexts. So let's get msrc and mdst parameters from srcctx and dstctx.
Mon, 29 May 2017 05:57:03 -0700 copies: add dstctx parameter
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:57:03 -0700] rev 32595
copies: add dstctx parameter Add parameter with destination context
Mon, 29 May 2017 05:56:17 -0700 copies: rename ctx to srcctx
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:56:17 -0700] rev 32594
copies: rename ctx to srcctx In the next diff we'll pass new dstctx parameter. Let's rename ctx to srcctx in this patch.
Mon, 29 May 2017 05:52:15 -0700 copies: rename m2 to mdst
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:52:15 -0700] rev 32593
copies: rename m2 to mdst Small refactoring to rename m2 to more clearer mdst.
Mon, 29 May 2017 05:52:15 -0700 copies: rename m1 to msrc
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:52:15 -0700] rev 32592
copies: rename m1 to msrc Small refactoring that renames `m1` parameter name to a more clearer name `msrc`.
Fri, 26 May 2017 13:27:21 -0700 transaction: delete callbacks after use
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 26 May 2017 13:27:21 -0700] rev 32591
transaction: delete callbacks after use Before this change, localrepository instances that performed multiple transactions would leak transaction objects. This could occur when running `hg convert`. When running `hg convert`, the leak would be ~90 MB per 10,000 changesets as measured with the Mercurial repo itself. The leak I tracked down involved the "validate" closure from localrepository.transaction(). It appeared to be keeping a reference to the original transaction via __closure__. __del__ semantics and a circular reference involving the repo object may have also come into play. Attempting to refactor the "validate" closure proved to be difficult because the "tr" reference in that closure may reference an object that isn't created until transaction.__init__ is called. And the "validate" closure is passed as an argument to transaction.__init__. Plus there is a giant warning comment in "validate" about how hacky it is. I did not want to venture into the dragon den. Anyway, we've had problems with transactions causing leaks before. The solution then (14e683d6b273) is the same as the solution in this patch: drop references to callbacks after they are called. This not only breaks cycles in core Mercurial but can help break cycles in extensions that accidentally introduce them. While I only tracked down a leak due to self.validator, since this is the 2nd time I've tracked down leaks due to transaction callbacks I figure enough is enough and we should prevent the class of leak from occurring regardless of the variable. That's why all callback variables are now nuked.
(0) -30000 -10000 -3000 -1000 -300 -100 -30 -10 -7 +7 +10 +30 +100 +300 +1000 +3000 +10000 tip