Comment 3 for bug 711077

Revision history for this message
Jeroen T. Vermeulen (jtv) wrote :

All the example oopses here occur at about the same point in the template, branch-listing.pt:

              <tal:known-person condition="branch/revision_author/person">
                <tal:person-link
                    replace="structure branch/revision_author/person/fmt:link"/>
              </tal:known-person>

Two of the three time out while checking for a valid person in ObjectImageDisplayPersonAPI(person)._get_custom_icon_url. Eliding some of these evaluations would help. But they don't seem to be the biggest time sink. The big one happens earlier on:

Each of the three oopses' query log shows a gap of about 5 seconds (!) between the join that fetches Bugs and BugBranches for the batch, and the query that gets its SpecificationBranches. Something big and costly is going on inbetween.

The two queries seem to be coming from adjacent calls to branch_ids_with_bug_links and branch_ids_with_spec_links respectively in BranchListingItemsMixin._createItem.

Only two things happen between those two queries: marshaling, and:

        set(bug_branch.branch.id for bug_branch in bug_branches)