# HG changeset patch # User Jun Wu <qu...@fb.com> # Date 1487814470 28800 # Wed Feb 22 17:47:50 2017 -0800 # Node ID 5c44925eab9a424369967e852b05f42443eac3a6 # Parent 28571825744fb4f4b424385f55afa9484532ef43 # Available At https://bitbucket.org/quark-zju/hg-draft # hg pull https://bitbucket.org/quark-zju/hg-draft -r 5c44925eab9a chgserver: start background preloading thread
A new boolean option chgserver.stateful is added. If set to True, chg master will start the background repo preloading thread and becomes stateful. diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py --- a/mercurial/chgserver.py +++ b/mercurial/chgserver.py @@ -37,4 +37,7 @@ Config # whether to skip config or env change checks skiphash = False + + # whether to be stateful, and preload repo state in background + stateful = False """ @@ -582,4 +585,26 @@ class chgunixservicehandler(object): self._hashstate, self._baseaddress) +class chgunixforkingservice(commandserver.unixforkingservice): + """like unixforkingservice with an optional chgcache.preloader""" + + def __init__(self, ui, repo, opts, handler=None): + super(chgunixforkingservice, self).__init__(ui, repo, opts, handler) + if self.ui.configbool('chgserver', 'stateful'): + self._preloader = chgcache.preloader() + else: + self._preloader = None + + def init(self): + super(chgunixforkingservice, self).init() + if self._preloader is not None: + self.ui.debug('starting background preloader\n') + self._preloader.start() + + def _cleanup(self): + super(chgunixforkingservice, self)._cleanup() + if self._preloader is not None: + self.ui.debug('stopping background preloader\n') + self._preloader.stop() + def chgunixservice(ui, repo, opts): # CHGINTERNALMARK is temporarily set by chg client to detect if chg will @@ -592,3 +617,3 @@ def chgunixservice(ui, repo, opts): ui.setconfig('bundle', 'mainreporoot', '', 'repo') h = chgunixservicehandler(ui) - return commandserver.unixforkingservice(ui, repo=None, opts=opts, handler=h) + return chgunixforkingservice(ui, repo=None, opts=opts, handler=h) _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel