##// END OF EJS Templates
pull: grab wlock during pull...
Pierre-Yves David -
r30068:a76d5ba7 default
parent child Browse files
Show More
@@ -1201,8 +1201,10 b' def pull(repo, remote, heads=None, force'
1201 " %s") % (', '.join(sorted(missing)))
1201 " %s") % (', '.join(sorted(missing)))
1202 raise error.Abort(msg)
1202 raise error.Abort(msg)
1203
1203
1204 lock = pullop.repo.lock()
1204 wlock = lock = None
1205 try:
1205 try:
1206 wlock = pullop.repo.wlock()
1207 lock = pullop.repo.lock()
1206 pullop.trmanager = transactionmanager(repo, 'pull', remote.url())
1208 pullop.trmanager = transactionmanager(repo, 'pull', remote.url())
1207 streamclone.maybeperformlegacystreamclone(pullop)
1209 streamclone.maybeperformlegacystreamclone(pullop)
1208 # This should ideally be in _pullbundle2(). However, it needs to run
1210 # This should ideally be in _pullbundle2(). However, it needs to run
@@ -1217,8 +1219,7 b' def pull(repo, remote, heads=None, force'
1217 _pullobsolete(pullop)
1219 _pullobsolete(pullop)
1218 pullop.trmanager.close()
1220 pullop.trmanager.close()
1219 finally:
1221 finally:
1220 pullop.trmanager.release()
1222 lockmod.release(pullop.trmanager, lock, wlock)
1221 lock.release()
1222
1223
1223 return pullop
1224 return pullop
1224
1225
@@ -7,20 +7,16 b' from __future__ import absolute_import'
7 import os
7 import os
8 import time
8 import time
9
9
10 from mercurial import (
10 def reposetup(ui, repo):
11 lock as lockmod,
12 )
13
11
14 class delaylock(lockmod.lock):
12 class delayedlockrepo(repo.__class__):
15 def lock(self):
13 def lock(self):
16 delay = float(os.environ.get('HGPRELOCKDELAY', '0.0'))
14 delay = float(os.environ.get('HGPRELOCKDELAY', '0.0'))
17 if delay:
15 if delay:
18 time.sleep(delay)
16 time.sleep(delay)
19 res = super(delaylock, self).lock()
17 res = super(delayedlockrepo, self).lock()
20 delay = float(os.environ.get('HGPOSTLOCKDELAY', '0.0'))
18 delay = float(os.environ.get('HGPOSTLOCKDELAY', '0.0'))
21 if delay:
19 if delay:
22 time.sleep(delay)
20 time.sleep(delay)
23 return res
21 return res
24
22 repo.__class__ = delayedlockrepo
25 def extsetup(ui):
26 lockmod.lock = delaylock
General Comments 0
You need to be logged in to leave comments. Login now