Rev 2994: Handle the progress bar in _generate_text_key_index correctly. in http://people.ubuntu.com/~robertc/baz2.0/reconcile

Robert Collins robertc at robertcollins.net
Thu Nov 15 21:46:50 GMT 2007


At http://people.ubuntu.com/~robertc/baz2.0/reconcile

------------------------------------------------------------
revno: 2994
revision-id:robertc at robertcollins.net-20071115214632-5l5co0c7ptkaz1e7
parent: robertc at robertcollins.net-20071115211844-3npqwsnifwdsh5kr
committer: Robert Collins <robertc at robertcollins.net>
branch nick: _generate_text_key_index
timestamp: Fri 2007-11-16 08:46:32 +1100
message:
  Handle the progress bar in _generate_text_key_index correctly.
modified:
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2007-11-15 21:18:44 +0000
+++ b/bzrlib/repository.py	2007-11-15 21:46:32 +0000
@@ -1242,11 +1242,21 @@
         revision_graph = self.get_revision_graph_with_ghosts()
         ancestors = revision_graph.get_ancestors()
         revision_order = tsort.topo_sort(ancestors)
+        text_key_references = self.find_text_key_references()
+        pb = ui.ui_factory.nested_progress_bar()
+        try:
+            return self._do_generate_text_key_index(ancestors, revision_order,
+                text_key_references, pb)
+        finally:
+            pb.finished()
+
+    def _do_generate_text_key_index(self, ancestors, revision_order,
+        text_key_references, pb):
+        """Worker for _generate_text_key_index to prevent deep nesting."""
         invalid_keys = set()
         revision_keys = {}
         for revision_id in revision_order:
             revision_keys[revision_id] = set()
-        text_key_references = self.find_text_key_references()
         text_count = len(text_key_references)
         # a cache of the text keys to allow reuse; costs a dict of all the
         # keys, but saves a 2-tuple for every child of a given key.
@@ -1267,7 +1277,6 @@
         # could gauge this by looking at available real memory etc, but this is
         # always a tricky proposition.
         inventory_cache = lru_cache.LRUCache(10)
-        pb = ui.ui_factory.nested_progress_bar()
         batch_size = 10 # should be ~150MB on a 55K path tree
         batch_count = len(revision_order) / batch_size + 1
         processed_texts = 0



More information about the bazaar-commits mailing list