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