[PATCH 3 of 4] shelve: use rollback instead of aborting a current transaction for shelve

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sun Oct 4 16:47:18 CDT 2015



On 10/04/2015 05:44 AM, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1443962009 -32400
> #      Sun Oct 04 21:33:29 2015 +0900
> # Node ID e265a8c85c3873815730921ae2d8ca3c6df3b48a
> # Parent  ce4ea67c82972f2988e42372cd6443b6c288e1c8
> shelve: use rollback instead of aborting a current transaction for shelve

I'm not sure that I like these one (and the next).

Using rollback means that the transaction is actually commited at some 
point. Rolling it back will likely cause cache invalidation issue and 
race condition with other reader.

However:

- the current shelve implementation is highly debatable by itself. (we 
should probably use a combination of fully in memory commit (not 
supported yet) and bundlerepo + merge so I'm not sure your proposal is 
notably worse (we are a bit between Scylla and Charybdis here)

- If this is the last blocking bits to get a transactional dirstate, the 
drawback at certainly worth it. The current bug associated with the lack 
of it have much more user impact.

I need to think about it.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list