[MERGE] Convert workingtree.py's use of lock_write to lock_tree_write
Robert Collins
robertc at robertcollins.net
Mon Sep 11 01:37:48 BST 2006
On Sun, 2006-09-10 at 19:21 -0500, John Arbash Meinel wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Robert Collins wrote:
> > All WorkingTree methods which write to the tree, but not to the branch
> > have been converted to use ``needs_tree_write_lock`` rather than
> > ``needs_write_lock``. Also converted is the revert, conflicts and tree
> > transform modules. This provides a modest performance improvement on
> > metadir style trees, due to the reduce lock-acquisition, and a more
> > significant performance improvement on lightweight checkouts from
> > remote branches, where trivial operations used to pay a significant
> > penalty. It also provides the basis for allowing readonly checkouts.
> > (Robert Collins)
> >
> > (Hopefully thats self explanatory :)
> >
> > Next up: anonymous/readonly checkouts.
> >
> > -Rob
> >
> ...
>
> > @@ -195,6 +200,7 @@
> > builder.merge(interesting_ids=["1"])
> > self.assertEqual(builder.this.get_file("1").read(), "text4" )
> > self.assertEqual(builder.this.get_file("2").read(), "hello1" )
> > + builder.cleanup()
> >
> > def test_file_moves(self):
> > """Test moves"""
>
> ^- Why all the additions of 'builder.cleanup()'?
>
> Otherwise +1.
The merge_core tests do branch.pull() - which used to work because
TreeTransform took out a write lock. With TreeTransform taking out
tree_write lock, that pull fails because the branch is read-locked and
we dont support upgrading to write locks from reads. So, MergeBuilder
needs to take out a write lock before the TreeTransform is created
(TreeTransform uses a RAII-like approach locking on construction). This
then leads to failure-to-unlock spew unless the builder is cleaned up
always.
Rob
--
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060911/9d235b79/attachment.pgp
More information about the bazaar
mailing list