Rev 6296: (jelmer) Add HPSS call for ``Repository.break_lock`` and in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Nov 25 13:09:38 UTC 2011
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6296 [merge]
revision-id: pqm at pqm.ubuntu.com-20111125130937-9b1kbg3t983cm80o
parent: pqm at pqm.ubuntu.com-20111125114224-ab9cggsgzzw3118l
parent: jelmer at samba.org-20111125120311-gdu26eswc991eho4
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-11-25 13:09:37 +0000
message:
(jelmer) Add HPSS call for ``Repository.break_lock`` and
``Branch.break_lock``. (Jelmer Vernooij)
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/smart/branch.py branch.py-20061124031907-mzh3pla28r83r97f-1
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/tests/blackbox/test_break_lock.py test_break_lock.py-20060303014503-a90e07d38d042d1d
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2011-11-25 11:42:24 +0000
+++ b/bzrlib/remote.py 2011-11-25 12:03:11 +0000
@@ -1525,8 +1525,14 @@
def break_lock(self):
# should hand off to the network
- self._ensure_real()
- return self._real_repository.break_lock()
+ path = self.bzrdir._path_for_remote_call(self._client)
+ try:
+ response = self._call("Repository.break_lock", path)
+ except errors.UnknownSmartMethod:
+ self._ensure_real()
+ return self._real_repository.break_lock()
+ if response != ('ok',):
+ raise errors.UnexpectedSmartServerResponse(response)
def _get_tarball(self, compression):
"""Return a TemporaryFile containing a repository tarball.
@@ -3041,8 +3047,14 @@
self.repository.unlock()
def break_lock(self):
- self._ensure_real()
- return self._real_branch.break_lock()
+ try:
+ response = self._call(
+ 'Branch.break_lock', self._remote_path())
+ except errors.UnknownSmartMethod:
+ self._ensure_real()
+ return self._real_branch.break_lock()
+ if response != ('ok',):
+ raise errors.UnexpectedSmartServerResponse(response)
def leave_lock_in_place(self):
if not self._lock_token:
=== modified file 'bzrlib/smart/branch.py'
--- a/bzrlib/smart/branch.py 2011-11-22 11:20:10 +0000
+++ b/bzrlib/smart/branch.py 2011-11-22 22:26:33 +0000
@@ -77,6 +77,15 @@
branch.repository.unlock()
+class SmartServerBranchBreakLock(SmartServerBranchRequest):
+
+ def do_with_branch(self, branch):
+ """Break a branch lock.
+ """
+ branch.break_lock()
+ return SuccessfulSmartServerResponse(('ok', ), )
+
+
class SmartServerBranchGetConfigFile(SmartServerBranchRequest):
def do_with_branch(self, branch):
=== modified file 'bzrlib/smart/repository.py'
--- a/bzrlib/smart/repository.py 2011-11-25 11:42:24 +0000
+++ b/bzrlib/smart/repository.py 2011-11-25 12:03:11 +0000
@@ -143,6 +143,15 @@
finally:
repository.unlock()
+
+class SmartServerRepositoryBreakLock(SmartServerRepositoryRequest):
+ """Break a repository lock."""
+
+ def do_repository_request(self, repository):
+ repository.break_lock()
+ return SuccessfulSmartServerResponse(('ok', ))
+
+
_lsprof_count = 0
class SmartServerRepositoryGetParentMap(SmartServerRepositoryRequest):
=== modified file 'bzrlib/smart/request.py'
--- a/bzrlib/smart/request.py 2011-11-22 22:27:12 +0000
+++ b/bzrlib/smart/request.py 2011-11-25 12:03:11 +0000
@@ -495,6 +495,9 @@
request_handlers.register_lazy(
'append', 'bzrlib.smart.vfs', 'AppendRequest')
request_handlers.register_lazy(
+ 'Branch.break_lock', 'bzrlib.smart.branch',
+ 'SmartServerBranchBreakLock')
+request_handlers.register_lazy(
'Branch.get_config_file', 'bzrlib.smart.branch',
'SmartServerBranchGetConfigFile')
request_handlers.register_lazy(
@@ -614,6 +617,9 @@
request_handlers.register_lazy('Repository.all_revision_ids',
'bzrlib.smart.repository',
'SmartServerRepositoryAllRevisionIds')
+request_handlers.register_lazy('Repository.break_lock',
+ 'bzrlib.smart.repository',
+ 'SmartServerRepositoryBreakLock')
request_handlers.register_lazy('Repository.gather_stats',
'bzrlib.smart.repository',
'SmartServerRepositoryGatherStats')
=== modified file 'bzrlib/tests/blackbox/test_break_lock.py'
--- a/bzrlib/tests/blackbox/test_break_lock.py 2011-11-22 23:15:35 +0000
+++ b/bzrlib/tests/blackbox/test_break_lock.py 2011-11-23 11:56:47 +0000
@@ -138,4 +138,4 @@
# 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(19, self.hpss_calls)
+ self.assertLength(5, self.hpss_calls)
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2011-11-25 11:42:24 +0000
+++ b/bzrlib/tests/test_remote.py 2011-11-25 12:03:11 +0000
@@ -1038,6 +1038,25 @@
return RemoteBranch(bzrdir, repo, _client=client, format=format)
+class TestBranchBreakLock(RemoteBranchTestCase):
+
+ def test_break_lock(self):
+ transport_path = 'quack'
+ transport = MemoryTransport()
+ client = FakeClient(transport.base)
+ client.add_expected_call(
+ 'Branch.get_stacked_on_url', ('quack/',),
+ 'error', ('NotStacked',))
+ client.add_expected_call(
+ 'Branch.break_lock', ('quack/',),
+ 'success', ('ok',))
+ transport.mkdir('quack')
+ transport = transport.clone('quack')
+ branch = self.make_remote_branch(transport, client)
+ branch.break_lock()
+ self.assertFinished(client)
+
+
class TestBranchGetParent(RemoteBranchTestCase):
def test_no_parent(self):
@@ -2204,6 +2223,18 @@
result)
+class TestRepositoryBreakLock(TestRemoteRepository):
+
+ def test_break_lock(self):
+ transport_path = 'quack'
+ repo, client = self.setup_fake_client_and_repository(transport_path)
+ client.add_success_response('ok')
+ repo.break_lock()
+ self.assertEqual(
+ [('call', 'Repository.break_lock', ('quack/',))],
+ client._calls)
+
+
class TestRepositoryGetGraph(TestRemoteRepository):
def test_get_graph(self):
=== modified file 'bzrlib/tests/test_smart.py'
--- a/bzrlib/tests/test_smart.py 2011-11-25 11:42:24 +0000
+++ b/bzrlib/tests/test_smart.py 2011-11-25 12:03:11 +0000
@@ -1153,6 +1153,26 @@
self.assertEqual('child-1', self.tree.branch.last_revision())
+class TestSmartServerBranchBreakLock(tests.TestCaseWithMemoryTransport):
+
+ def test_lock_to_break(self):
+ base_branch = self.make_branch('base')
+ request = smart_branch.SmartServerBranchBreakLock(
+ self.get_transport())
+ base_branch.lock_write()
+ self.assertEqual(
+ smart_req.SuccessfulSmartServerResponse(('ok', ), None),
+ request.execute('base'))
+
+ def test_nothing_to_break(self):
+ base_branch = self.make_branch('base')
+ request = smart_branch.SmartServerBranchBreakLock(
+ self.get_transport())
+ self.assertEqual(
+ smart_req.SuccessfulSmartServerResponse(('ok', ), None),
+ request.execute('base'))
+
+
class TestSmartServerBranchRequestGetParent(tests.TestCaseWithMemoryTransport):
def test_get_parent_none(self):
@@ -1438,6 +1458,26 @@
request.execute(''))
+class TestSmartServerRepositoryBreakLock(tests.TestCaseWithMemoryTransport):
+
+ def test_lock_to_break(self):
+ backing = self.get_transport()
+ request = smart_repo.SmartServerRepositoryBreakLock(backing)
+ tree = self.make_branch_and_memory_tree('.')
+ tree.branch.repository.lock_write()
+ self.assertEqual(
+ smart_req.SuccessfulSmartServerResponse(('ok', ), None),
+ request.execute(''))
+
+ def test_nothing_to_break(self):
+ backing = self.get_transport()
+ request = smart_repo.SmartServerRepositoryBreakLock(backing)
+ tree = self.make_branch_and_memory_tree('.')
+ self.assertEqual(
+ smart_req.SuccessfulSmartServerResponse(('ok', ), None),
+ request.execute(''))
+
+
class TestSmartServerRepositoryGetParentMap(tests.TestCaseWithMemoryTransport):
def test_trivial_bzipped(self):
@@ -2041,6 +2081,8 @@
def test_registered_methods(self):
"""Test that known methods are registered to the correct object."""
+ self.assertHandlerEqual('Branch.break_lock',
+ smart_branch.SmartServerBranchBreakLock)
self.assertHandlerEqual('Branch.get_config_file',
smart_branch.SmartServerBranchGetConfigFile)
self.assertHandlerEqual('Branch.put_config_file',
@@ -2089,6 +2131,8 @@
smart_packrepo.SmartServerPackRepositoryAutopack)
self.assertHandlerEqual('Repository.all_revision_ids',
smart_repo.SmartServerRepositoryAllRevisionIds)
+ self.assertHandlerEqual('Repository.break_lock',
+ smart_repo.SmartServerRepositoryBreakLock)
self.assertHandlerEqual('Repository.gather_stats',
smart_repo.SmartServerRepositoryGatherStats)
self.assertHandlerEqual('Repository.get_parent_map',
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-11-25 11:42:24 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-11-25 12:03:11 +0000
@@ -105,6 +105,7 @@
* New HPSS calls ``Repository.has_signature_for_revision_id``,
``Repository.make_working_trees``, ``BzrDir.destroy_repository``,
``BzrDir.has_workingtree``, ``Branch.put_config_file``,
+ ``Branch.break_lock`` and ``Repository.break_lock``,
and ``Repository.all_revision_ids``.
(Jelmer Vernooij)
More information about the bazaar-commits
mailing list