# HG changeset patch # User Pierre-Yves David # Date 1429530486 -7200 # Node ID f8cb01637e75b4370bb3e8d369a6d7134f1ccfa3 # Parent a2d4901e211e9ccfd633fefaf2d52326ab22ae3c graft: avoid potential deadlock We must acquire 'wlock' before 'lock'. diff -r a2d4901e211e -r f8cb01637e75 README --- a/README Mon Apr 20 13:47:04 2015 +0200 +++ b/README Mon Apr 20 13:48:06 2015 +0200 @@ -57,6 +57,7 @@ - pull: properly install the bundle2 par generator (avoid sending all markers for each pull) - commit: avoid potential deadlock (acquires wlock before lock) +- graft: avoid potential deadlock (acquires wlock before lock) 5.1.2 -- 2015-04-01 diff -r a2d4901e211e -r f8cb01637e75 hgext/evolve.py --- a/hgext/evolve.py Mon Apr 20 13:47:04 2015 +0200 +++ b/hgext/evolve.py Mon Apr 20 13:48:06 2015 +0200 @@ -2240,8 +2240,10 @@ kwargs['rev'] = [] obsoleted = kwargs.setdefault('obsolete', []) - lock = repo.lock() + wlock = lock = None try: + wlock = repo.wlock() + lock = repo.lock() if kwargs.get('old_obsolete'): if kwargs.get('continue'): obsoleted.extend(repo.opener.read('graftstate').splitlines()) @@ -2256,7 +2258,7 @@ return commitwrapper(orig, ui, repo,*revs, **kwargs) finally: - lock.release() + lockmod.release(lock, wlock) @eh.extsetup def oldevolveextsetup(ui):