[PATCH] repair: use context manager for lock management

Yuya Nishihara yuya at tcha.org
Sun Mar 26 07:20:12 EDT 2017


On Fri, 24 Mar 2017 23:34:28 -0400, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1490327243 14400
> #      Thu Mar 23 23:47:23 2017 -0400
> # Node ID c053dc8a24afad24872397e5cd3f57411fc7d172
> # Parent  d0c2db2d9f13dca534c598de050eb1919ef79059
> repair: use context manager for lock management

Sure. Queued this, thanks.

> I found several other instances of acquiring the lock inside of the 'try', but
> those finally blocks handle None references.  I also started switching some
> trivial try/finally blocks to context managers, but didn't get them all because
> indenting over 3x for lock, wlock and transaction would have spilled over 80
> characters.  That got me wondering if there should be a repo.rwlock(), to handle
> locking and unlocking in the proper order.

We have lockmod.release() helper. We also have util.ctxmanager(), but IMHO it
doesn't improve code readability that much.

> It also looks like py27 supports supports multiple context managers for a single
> 'with' statement.  Should I hold off on the rest until py26 is dropped?


More information about the Mercurial-devel mailing list