bzr merge of a large project locally can sit for a while with no indication of what it is doing

Bug #548523 reported by James Westby
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Bazaar
Confirmed
Medium
Unassigned

Bug Description

Hi,

Take a fairly large project, say launchpad, and make two local branches inside
a shared repository, diverge them by a couple of revisions, add some fairly slow
rotational disks, and run "bzr merge". What you may find is that there is an
extended period of time where it is working, but no progress is displayed an no
messages are printed to indicate what is happening. Eventually the "preparing
file merge" phase will start.

If you don't diverge the branches then the "Nothing to do" is quick, so it's not simply
opening the branches, and not copying revision data as a shared repo is used, so
maybe it's just grabbing the graph and calculating the merge base that is slow.

Thanks,

James

Revision history for this message
Martin Pool (mbp) wrote : Re: [Bug 548523] [NEW] bzr merge of a large project locally can sit for a while with no indication of what it is doing

It will help progress bugs like this if you can attach a backtrace
(press C-\ then type 'bt'), so we know where it's waiting.

thanks

tags: added: merge performance progress
Changed in bzr:
importance: Undecided → Medium
status: New → Confirmed
Revision history for this message
James Westby (james-w) wrote :
Download full text (10.5 KiB)

Here's a sample every few seconds:

  /home/jw2328/devel/bzr/bzr.dev/bzrlib/builtins.py(3833)run()
-> location, revision, remember, possible_transports, None)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/builtins.py(3962)_get_merger_from_branch()
-> other_revision_id, base_revision_id, other_branch, base_branch)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/merge.py(364)from_revision_ids()
-> merger.find_base()
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/merge.py(531)find_base()
-> lcas = self.revision_graph.find_lca(revisions[0], revisions[1])
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(246)find_lca()
-> border_common, common, sides = self._find_border_ancestors(revisions)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(680)_find_border_ancestors()
-> new_ancestors = searcher.step()
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(1257)step()
-> return self.next()
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(1279)next()
-> self._advance()
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(1313)_advance()
-> found, ghosts, next, parents = self._do_query(self._next_query)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(1336)_do_query()
-> parent_map = self._parents_provider.get_parent_map(revisions)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/graph.py(167)get_parent_map()
-> parent_map = self._get_parent_map(needed_revisions)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/repository.py(2618)get_parent_map()
-> self.revisions.get_parent_map(query_keys).iteritems():
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/groupcompress.py(1313)get_parent_map()
-> return self._get_parent_map_with_sources(keys)[0]
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/groupcompress.py(1332)_get_parent_map_with_sources()
-> new_result = source.get_parent_map(missing)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/groupcompress.py(1969)get_parent_map()
-> for node in nodes:
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/groupcompress.py(1941)_get_entries()
-> for node in self._graph_index.iter_entries(keys):
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/index.py(1321)iter_entries()
-> for node in index.iter_entries(keys):
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/btree_index.py(1162)iter_entries()
-> nodes, nodes_and_keys = self._walk_through_internal_nodes(needed_keys)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/btree_index.py(1116)_walk_through_internal_nodes()
-> nodes = self._get_leaf_nodes(node_indexes)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/btree_index.py(957)_get_leaf_nodes()
-> found = self._get_nodes(self._leaf_node_cache, node_indexes)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/btree_index.py(934)_get_nodes()
-> found.update(self._get_and_cache_nodes(needed))
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/btree_index.py(711)_get_and_cache_nodes()
-> for node_pos, node in self._read_nodes(sorted(nodes)):
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/btree_index.py(1532)_read_nodes()
-> for offset, data in data_ranges:
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/transport/__init__.py(700)_seek_and_read()
-> data = fp.read(c_offset.length)

  /home/jw2328/devel/bzr/bzr.dev/bzrlib/builtins.py(3833)run()
-> location, revision, remember, possible_transports, None)
  /home/jw2328/devel/bzr/bzr.dev/bzrlib/builtins.py(3962)_get_merger_fr...

Jelmer Vernooij (jelmer)
tags: added: check-for-breezy
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.