sapling/eden/mononoke
Evgenii Kazakov 579e3cbd1c mononoke/lfs_server: Update Mononoke LFS reverse DNS lookups to use the trust-dns crate
Summary:
Before this diff, we did DNS lookups using a crate called `dns_lookup`. This crate is a thin layer over libc DNS lookups. Those lookups are blocking (i.e. they hold a thread), so they're not very friendly to asynchronous code. We currently offload them on a dedicated thread pool to mitigate the issue, but this isn't ideal: if we experience e.g. slow DNS responses, we could saturate this thread pool pretty easily.

I updated it to use the trust-dns crate, which provides an asynchronous implementation of DNS lookups, and is currently used in other parts of Mononoke.

Reviewed By: krallin

Differential Revision: D25849872

fbshipit-source-id: 826ab4e5618844f3b48e5def4ad9bd163753ebb1
2021-01-11 18:03:11 -08:00
..
benchmark convert changesets to new type futures 2021-01-06 07:11:36 -08:00
blobimport_lib convert BlobRepoHg to new type futures 2020-12-17 07:45:26 -08:00
blobrepo convert changesets to new type futures 2021-01-06 07:11:36 -08:00
blobrepo_utils convert BlobRepoHg to new type futures 2020-12-17 07:45:26 -08:00
blobstore add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
blobstore_sync_queue mononoke/blobstore: pass CoreContext via borrowed instead of owned value 2020-11-27 03:31:07 -08:00
bonsai_git_mapping mononoke/blobstore: pass CoreContext via borrowed instead of owned value 2020-11-27 03:31:07 -08:00
bonsai_globalrev_mapping add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
bonsai_hg_mapping add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
bookmarks mononoke: limit concurrency when putting commits to scribe queue 2020-12-17 12:14:06 -08:00
bulkops mononoke: add PublicChangesetBulkFetch::fetch_ids 2021-01-11 10:55:39 -08:00
cache_warmup mononoke/cache_warmup: fix a typo in logging 2021-01-05 07:39:46 -08:00
changesets add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
cmdlib mononoke: add an option to read content ids from file in fixrepocontents 2021-01-07 10:03:25 -08:00
cmds mononoke: add choice of direction to bulkops 2021-01-11 10:55:39 -08:00
commit_rewriting mononoke: add a tunable to disable all x-repo syncs 2021-01-05 15:16:50 -08:00
common observability: add scuba verbose logging 2021-01-05 09:21:38 -08:00
derived_data add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
edenapi_server third-party: rust: update Gotham to 0.5 2021-01-11 03:32:25 -08:00
fastreplay mononoke/mysql: make mysql options not copyable 2020-12-17 15:46:30 -08:00
filenodes add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
filestore convert changesets to new type futures 2021-01-06 07:11:36 -08:00
git add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
gotham_ext mononoke/lfs_server: Update Mononoke LFS reverse DNS lookups to use the trust-dns crate 2021-01-11 18:03:11 -08:00
hgcli mononoke/integration: make integration tests work under @mode/dev-rust-oss 2020-12-18 06:13:32 -08:00
hgproto Add unbundlereplay command 2021-01-07 20:36:26 -08:00
hook_tailer mononoke/mysql: make mysql options not copyable 2020-12-17 15:46:30 -08:00
hooks Update regex to v1.4.2 2020-12-29 22:59:52 -08:00
lfs_import_lib mononoke/blobstore: pass CoreContext via borrowed instead of owned value 2020-11-27 03:31:07 -08:00
lfs_protocol autocargo: regen 2020-12-08 18:30:24 -08:00
lfs_server mononoke/lfs_server: log HTTP-server level errors 2021-01-11 03:32:26 -08:00
load_limiter Regenerate all Cargo.tomls after upgrade to futures 0.3.5 2020-07-06 20:49:43 -07:00
manifest mononoke/manifest: add Entry::map_leaf and Entry::map_tree 2020-12-10 03:07:45 -08:00
mercurial add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
metaconfig Update regex to v1.4.2 2020-12-29 22:59:52 -08:00
microwave add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
mononoke_api convert changesets to new type futures 2021-01-06 07:11:36 -08:00
mononoke_hg_sync_job Add unbundlereplay command 2021-01-07 20:36:26 -08:00
mononoke_types add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
mutable_counters rust-shed/futures_01_ext: rename futures_ext to futures_01_ext 2020-11-05 06:07:16 -08:00
newfilenodes mononoke/caching_ext: remove 0.1 futures 2020-12-10 10:24:58 -08:00
observability observability: add scuba verbose logging 2021-01-05 09:21:38 -08:00
permission_checker bypassing hooks for members of scm 2020-10-29 10:14:25 -07:00
phases mononoke/phases: remove futures 0.1 2020-12-17 14:30:57 -08:00
pushrebase convert changesets to new type futures 2021-01-06 07:11:36 -08:00
reachabilityindex add ref-cast to thrift dependencies 2021-01-11 02:17:50 -08:00
regenerate_hg_filenodes convert BlobRepoHg to new type futures 2020-12-17 07:45:26 -08:00
repo_client mononoke: add link to reclone instruction 2021-01-08 10:33:40 -08:00
repo_import convert BlobRepoHg to new type futures 2020-12-17 07:45:26 -08:00
revset mononoke/integration: make integration tests work under @mode/dev-rust-oss 2020-12-18 06:13:32 -08:00
scs_server mononoke: log public commits to scribe from scs move/create_bookmark method 2020-12-17 00:19:00 -08:00
segmented_changelog mononoke: add choice of direction to bulkops 2021-01-11 10:55:39 -08:00
server observability: add scuba verbose logging 2021-01-05 09:21:38 -08:00
sshrelay autocargo: regen 2020-12-08 18:30:24 -08:00
tests pull: use the new repo.pull API if possible 2021-01-11 13:28:15 -08:00
time_window_counter mononoke/lfs_server: popularity: add ODS counters, timeouts and tests 2020-07-15 03:39:23 -07:00
tunables mononoke: add a tunable to disable all x-repo syncs 2021-01-05 15:16:50 -08:00
unbundle_replay mononoke/mysql: make mysql options not copyable 2020-12-17 15:46:30 -08:00
walker convert changesets to new type futures 2021-01-06 07:11:36 -08:00
Cargo.toml Regen autocargo files 2021-01-11 16:14:36 -08:00
README.md mononoke: add README.md and the missing pieces for supporting cargo (#13) 2020-02-13 00:12:36 -08:00

Mononoke

Mononoke is a next-generation server for the Mercurial source control system, meant to scale up to accepting thousands of commits every hour across millions of files. It is primarily written in the Rust programming language.

Caveat Emptor

Mononoke is still in early stages of development. We are making it available now because we plan to start making references to it from our other open source projects.

The version that we provide on GitHub does not build yet.

This is because the code is exported verbatim from an internal repository at Facebook, and not all of the scaffolding from our internal repository can be easily extracted. The key areas where we need to shore things up are:

  • Full support for a standard cargo build.
  • Open source replacements for Facebook-internal services (blob store, logging etc).

The current goal is to get Mononoke working on Linux. Other Unix-like OSes may be supported in the future