sapling/eden/fs
Adam Simpkins 0285670135 fetch missing tree data from a remote hg server when needed
Summary:
This is a first pass at updating eden to fetch tree manifest data from a remote
mercurial server on demand.  The code now catches MissingKeyErrors thrown by
the datastore code, and then fetches the requested tree data from the remote
server.

This makes it safe to use tree manifest for import, as we can now fetch missing
tree data as needed, instead of always returning I/O errors whenever we reach a
tree not available locally.

Unfortunately, the performance of downloading tree data is currently not very
good: it takes 90+ seconds plus to download any tree data.  The current
mercurial server code appears to always provide full recursive tree data
(unless you ask for the delta between two manifests, which we do not have).
Even when asking for very small subdirectories, the server appears to send the
full tree manifest data for the entire repository, sometimes taking longer than
if we had asked for the full repository data to start with.

Note that tree manifest import is still disabled by default with this diff, and
must be explicitly enabled by running edenfs with `--use_hg_tree_manifest`.

Reviewed By: wez

Differential Revision: D5544817

fbshipit-source-id: 940e0c914f055edc1beee438b0ac50c2f8b08b03
2017-08-04 18:46:54 -07:00
..
config Auto-dep the auto-dep'd TARGETS 2017-07-02 15:50:51 -07:00
fuse move dropPrivileges() to UserInfo, and restore supplimentary groups 2017-07-27 19:39:00 -07:00
inodes fix EdenServer::unmount() to fully wait for mount point cleanup 2017-08-02 17:07:19 -07:00
journal format eden/fs TARGETS files with autodeps 2017-06-27 21:20:15 -07:00
model add == and != comparisons for Tree objects 2017-07-05 11:21:30 -07:00
rocksdb Merge StringBase.cpp into String.cpp 2017-06-29 20:20:11 -07:00
service use folly::Synchronized to manage the mount point map 2017-08-02 17:42:49 -07:00
store fetch missing tree data from a remote hg server when needed 2017-08-04 18:46:54 -07:00
testharness Adding lastCheckoutTime to EdenMount and initializing timestamps of FileInode with lastCheckoutTime 2017-07-27 11:52:31 -07:00
utils update hg import tester to help benchmarking 2017-08-03 18:00:22 -07:00