I thought we can expand list comprehension in the `branches/tags` to be a full 
loop and wrap `Object` construction in the `try..except` block and that it will 
be cheaper than calling `is_valid` on every branch/tag, since exception 
handling logic will run only for repos with integrity problems, which is fairly 
rare. I'm not sure, though.

We can also cache results of branches/tags and update cache on repo change with 
proper `is_valid` checks, but we're moving from keeping repo metadata in mongo 
to direct access, so don't sure if it worth it.

`git fsck` approach looks like overkill to me, we'll need to parse it's output 
to determine what's wrong and also save the results somewhere to skip invalid 
branches. Correct me if I'm mistaken.


---

** [tickets:#7873] Git branch & tag speedups**

**Status:** in-progress
**Milestone:** unreleased
**Labels:** performance sf-current sf-4 
**Created:** Fri Apr 17, 2015 09:23 PM UTC by Dave Brondsema
**Last Updated:** Tue Jun 09, 2015 09:57 PM UTC
**Owner:** Heith Seewald

I saw that git pages on forge-allura.apache.org were slow, so I looked at 
stats.log and saw that the sidebar was the slowest part.  I did some additional 
digging and found 2 specific areas for improvement:

* in `git_main.py` change `default_branch_name` to a `@LazyProperty` since it 
is called many times inside a loop in `RepositoryApp.sidebar_menu`
* Since `sidebar_menu` only requests a certain number of branches, pass that 
"limit" all the way through to `git_repo.py`'s `branches` method so that 
`is_valid()` is only called a minimum number of times needed.
    * make sure the default branch logic to put it at the top of the list still 
works (e.g. always put it at the top first)

In addition to those changes, generalize and apply the same approach to the 
tags.  And also check ForgeHg to see if mercurial can benefit the same way.


---

Sent from forge-allura.apache.org because [email protected] is subscribed 
to https://forge-allura.apache.org/p/allura/tickets/

To unsubscribe from further messages, a project admin can change settings at 
https://forge-allura.apache.org/p/allura/admin/tickets/options.  Or, if this is 
a mailing list, you can unsubscribe from the mailing list.

Reply via email to