Clone
Cédric Champeau
committed
on 11 Apr 17
Enable parallel resolution of the dependency graph
This commit introduces parallel resolution of a dependency graph. When the graph is resol… Show more
Enable parallel resolution of the dependency graph

This commit introduces parallel resolution of a dependency graph. When the graph is resolved:

- pick a node from the queue (starting from the root node)

- for its outgoing edges, resolve them serially, or concurrently if:

  - all of the edges reference nodes which metadata hasn't been resolved yet

  - or there are more than 8 edges

- then add discovered edges _in order_ add the end of the queue

This means that not _all_ graph resolution is done concurrently: there's a heuristic to tell if it's worth doing it,

and similarly, there are operations which still need to be done serially in order to have guarantees on the shape

of the graph (typically, to make sure that files are visible in a certain order).

Show less

master + 507 more