sapling/hgext3rd
Zach Amsden f99540d161 [fastlog-hg] Thread safety
Summary:
Sharing repo.changelog across threads is problematic in mercurial
since it may internally cache things, and clearing cache while another
thread is executing is not nice.  In particular, code such as the following
is inherently raceful when sharing changelogs (or anything derived from
revlog) across threads:

    if self._cache:
        if self._cache[0] == node:
            return self._cache[2]
        cachedrev = self._cache[1]

Reworked things a bit to make sure the spawned threads have their own
newly created changelogs and member functions internally referencing them.

Test Plan:
No longer seeing random exceptions being thrown from local log
threads (which terminates iteration)

Reviewers: rmcelroy, #mercurial, ttung, quark, durham

Reviewed By: durham

Subscribers: mjpieters

Differential Revision: https://phabricator.intern.facebook.com/D3733592

Tasks: 12341014

Signature: t1:3733592:1471908572:877b56241e56b6ea92c76023460d4fbe80a4263d
2016-08-23 11:46:34 -07:00
..
__init__.py Fix hgext3rd/__init__.py to make sure it is a namespace package 2016-08-22 17:39:02 -07:00
arcdiff.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
backups.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
bundle2hooks.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
catnotate.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
chistedit.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
commitextras.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
dirsync.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
errorredirect.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
extorder.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
extutil.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
fastlog.py [fastlog-hg] Thread safety 2016-08-23 11:46:34 -07:00
fbamend.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
fbconduit.py Parallel callout to scmquery through conduit 2016-08-12 15:52:50 -07:00
fbhistedit.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
githelp.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
gitlookup.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
gitrevset.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
grepdiff.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
inhibitwarn.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
mergedriver.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
morestatus.py morestatus: rebase takes precedence over update 2016-08-10 22:19:30 +01:00
nointerrupt.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
ownercheck.py ownercheck: new extension to prevent operations on repos not owned 2016-07-26 13:10:15 +01:00
patchpython.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
perftweaks.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
phabdiff.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
phabstatus.py Add sync status and change the conduit call to differential.querydiffhashes 2016-08-05 11:33:36 -07:00
phrevset.py phrevset: do not depend on hgsubversion 2016-07-20 20:09:29 +01:00
pullcreatemarkers.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
pushrebase.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
pushvars.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
rage.py rage: filter "FM:" from blackbox.log 2016-08-05 19:17:45 +01:00
reporootlog.py [reporootlog] report the repo root to the scm wrappers 2016-08-02 11:59:52 -07:00
reset.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
sampling.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
show.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
simplecache.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
smartfixup.py smartfixup: add an interactive mode 2016-08-23 15:20:20 +01:00
smartlog.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
sparse.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00
sshaskpass.py sshaskpass: use mkdtemp to create temporary directory 2016-08-16 19:51:47 +01:00
statprofext.py statprofext: import statprof from standard python path 2016-08-01 12:00:18 -07:00
tweakdefaults.py tweakdefaults: make "bookmarks" use the unfiltered repo 2016-08-11 18:43:06 +01:00
uncommit.py Implement 'hg uncommit' 2016-08-17 13:43:25 -07:00
upgradegeneraldelta.py hgext: move single file extensions to hgext3rd 2016-07-08 13:15:42 +01:00