Rev 4296: Lock new branches while we configure them in clone and sprout for less lock churn. in http://people.ubuntu.com/~robertc/baz2.0/pending/push.roundtrips
Robert Collins
robertc at robertcollins.net
Wed Apr 15 04:20:52 BST 2009
At http://people.ubuntu.com/~robertc/baz2.0/pending/push.roundtrips
------------------------------------------------------------
revno: 4296
revision-id: robertc at robertcollins.net-20090415032048-u7ccp2v2ee14ebjt
parent: robertc at robertcollins.net-20090415020735-poizrhi1b98mtdgk
committer: Robert Collins <robertc at robertcollins.net>
branch nick: push.roundtrips
timestamp: Wed 2009-04-15 13:20:48 +1000
message:
Lock new branches while we configure them in clone and sprout for less lock churn.
=== modified file 'bzrlib/branch.py'
--- a/bzrlib/branch.py 2009-04-14 07:11:01 +0000
+++ b/bzrlib/branch.py 2009-04-15 03:20:48 +0000
@@ -997,10 +997,14 @@
be truncated to end with revision_id.
"""
result = to_bzrdir.create_branch()
- if repository_policy is not None:
- repository_policy.configure_branch(result)
- self.copy_content_into(result, revision_id=revision_id)
- return result
+ result.lock_write()
+ try:
+ if repository_policy is not None:
+ repository_policy.configure_branch(result)
+ self.copy_content_into(result, revision_id=revision_id)
+ finally:
+ result.unlock()
+ return result
@needs_read_lock
def sprout(self, to_bzrdir, revision_id=None, repository_policy=None):
@@ -1012,10 +1016,13 @@
be truncated to end with revision_id.
"""
result = to_bzrdir.create_branch()
- if repository_policy is not None:
- repository_policy.configure_branch(result)
- self.copy_content_into(result, revision_id=revision_id)
- result.set_parent(self.bzrdir.root_transport.base)
+ try:
+ if repository_policy is not None:
+ repository_policy.configure_branch(result)
+ self.copy_content_into(result, revision_id=revision_id)
+ result.set_parent(self.bzrdir.root_transport.base)
+ finally:
+ result.unlock()
return result
def _synchronize_history(self, destination, revision_id):
=== modified file 'bzrlib/tests/blackbox/test_push.py'
--- a/bzrlib/tests/blackbox/test_push.py 2009-04-15 02:07:35 +0000
+++ b/bzrlib/tests/blackbox/test_push.py 2009-04-15 03:20:48 +0000
@@ -217,7 +217,7 @@
# being too low. If rpc_count increases, more network roundtrips have
# become necessary for this use case. Please do not adjust this number
# upwards without agreement from bzr's network support maintainers.
- self.assertLength(28, self.hpss_calls)
+ self.assertLength(23, self.hpss_calls)
remote = Branch.open('public')
self.assertEndsWith(remote.get_stacked_on_url(), '/parent')
More information about the bazaar-commits
mailing list