For each file there will be a conduit call so the site is flooded when the directory has lots of files. The conduit calls (diffusion.lastmodifiedquery) are fairly slow which makes the situation even worse.
I think it's ok to freeze the page, but we should limit the async calls which are making the whole site busy.
Description
Description
Revisions and Commits
Revisions and Commits
Event Timeline
Comment Actions
Some general related things here:
- D5254 and followups batch these requests, but the state at the end of that line of patches was slightly worse for Facebook's large repositories.
- T2683 discusses this task more generally -- essentially, all slow operations in Diffusion are currently slow because <vcs> log <path> is slow. Building a cache for that command would improve the performance of many of the slow operations. However, this is hard. T2683 has a possible approach (use APC as a graph server and only cache recent activity). Another approach would be to deploy dedicated servers to cache commit graphs. This is not realistic for most installs, but might be for Facebook.
- T430 and D7641 discuss shaping and rate-limiting Ajax requests. These probably aren't desirable as end results here, but do make sense on other pages (commit pages, revision pages).
- Any work performed here is very likely to be sweeping and extremely difficult for Facebook to cherry-pick. Particularly, Diffusion has been an area of focus since Septmeber and received hundreds of changes.