sapling/reachabilityindex/src
Matthew Dippel 8d8d5b4b8f Refactor SkiplistIndex to handle large depth indexing
Summary:
The previous implementation of `lazy_index` would hit max recursion depth, due to long chains of `Future`s all calling poll on each other when the `Future` representing indexing of a node is waiting for the `Future` of the parent, all the way down. This modification avoids this by:
* Doing a BFS down to the desired depth, remembering all the nodes seen and returning them in topological order (oldest to newest). This is done in a `loop_fn` and so doesn't have the long chain of futures polling each other.
* Synchronously indexing the list of discovered nodes.

Reviewed By: StanislavGlebik

Differential Revision: D9228578

fbshipit-source-id: 0f472d13ee5a0a33472700d1fea29bd7a9938011
2018-08-13 17:36:13 -07:00
..
errors.rs Moved some functionality from GenerationBFS into a shared helpers.rs file. 2018-07-23 17:08:05 -07:00
genbfs.rs Remove 'mut' from self signature in ReachabilityIndex signature. 2018-08-06 11:06:28 -07:00
helpers.rs Refactor SkiplistIndex to handle large depth indexing 2018-08-13 17:36:13 -07:00
index.rs impl LeastCommonAncestorHint for SkiplistIndex 2018-08-13 17:36:13 -07:00
lib.rs mononoke: use ChangesetId in Changesets 2018-08-06 10:36:43 -07:00
skiplist.rs Refactor SkiplistIndex to handle large depth indexing 2018-08-13 17:36:13 -07:00
tests.rs Remove 'mut' from self signature in ReachabilityIndex signature. 2018-08-06 11:06:28 -07:00