sapling/eden/mononoke
Thomas Orozco cb48ff2092 mononoke/revset: buffer loading generations
Summary:
In the hg sync job, we need to load up the ancestors for all bookmarks known to
the server we are pushhing to, and for e.g. fbsource that might be > 10K
bookmarks. If we fetch those 1 by 1 (because e.g. cold cache), that will take a
very long time.

Unfortunately, we don't currently have a way of buffering access to changesets,
so for now let's mitigate by buffering.

Reviewed By: ikostia, HarveyHunt

Differential Revision: D21860228

fbshipit-source-id: 90977a9e00689c1df5ae53d149c267de9b2f973e
2020-06-04 01:24:08 -07:00
..
apiserver common/rust/identity_ext: unify identity parsing into a single crate 2020-06-03 13:16:24 -07:00
backsyncer cross_repo: record sync map version_name in synced_commit_mapping 2020-06-01 07:16:52 -07:00
benchmark mononoke: add Changesets::get_sql_changesets 2020-05-13 16:53:16 -07:00
blobimport_lib cross_repo: record sync map version_name in synced_commit_mapping 2020-06-01 07:16:52 -07:00
blobrepo RFC: introduce FilenodeResult 2020-06-01 05:27:34 -07:00
blobrepo_utils autocargo: regenerate 2020-05-19 16:08:40 -07:00
blobstore Rip out internal cache from SQLBlob 2020-06-01 10:09:55 -07:00
blobstore_sync_queue autocargo: regenerate 2020-05-19 16:08:40 -07:00
bonsai_git_mapping autocargo: regenerate 2020-05-19 16:08:40 -07:00
bonsai_globalrev_mapping mononoke: add merge commit validation 2020-05-20 11:17:21 -07:00
bonsai_hg_mapping rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
bookmarks autocargo: regenerate 2020-05-19 16:08:40 -07:00
bulkops mononoke: update bulkops::fetch_all_public_changesets to return commits in order 2020-05-21 20:43:45 -07:00
cache_warmup RFC: introduce FilenodeResult 2020-06-01 05:27:34 -07:00
changesets mononoke: update bulkops::fetch_all_public_changesets to return commits in order 2020-05-21 20:43:45 -07:00
cmdlib metaconfig/parser: use free functions for loading configuration 2020-06-02 09:30:03 -07:00
cmds add option to rebuild skiplists 2020-06-03 14:24:16 -07:00
commit_rewriting cross_repo: record sync map version_name in synced_commit_mapping 2020-06-01 07:16:52 -07:00
common autocargo: regenerate 2020-05-19 16:08:40 -07:00
config_structs Replace hardcoded hgsql db address in mononoke_hg_sync_job 2020-06-01 06:05:36 -07:00
derived_data mononoke: return dummy FilenodesOnlyPublic value if filenodes are disabled 2020-06-03 04:21:23 -07:00
edenapi_server/src rust-shed: add secure_utils to the shed 2020-06-03 13:16:23 -07:00
fastreplay metaconfig/parser: use free functions for loading configuration 2020-06-02 09:30:03 -07:00
filenodes RFC: introduce FilenodeResult 2020-06-01 05:27:34 -07:00
filestore autocargo: regenerate 2020-05-19 16:08:40 -07:00
git autocargo: regenerate 2020-05-19 16:08:40 -07:00
gotham_ext/src common/rust/identity_ext: unify identity parsing into a single crate 2020-06-03 13:16:24 -07:00
hgcli common/rust/{scuba, scribe}: use a Duration for flush 2020-06-01 01:38:58 -07:00
hgproto autocargo: regenerate 2020-05-19 16:08:40 -07:00
hook_tailer metaconfig/parser: use free functions for loading configuration 2020-06-02 09:30:03 -07:00
hooks autocargo: regenerate 2020-05-19 16:08:40 -07:00
lfs_import_lib autocargo: regenerate 2020-05-19 16:08:40 -07:00
lfs_protocol lfs_protocol: move LFS MIME type into protocol crate 2020-04-23 13:58:04 -07:00
lfs_server/src rust-shed: add secure_utils to the shed 2020-06-03 13:16:23 -07:00
load_limiter mononoke: remove getfiles from ratelimiter and perf counter 2020-05-19 04:43:00 -07:00
manifest Expose ctime from Blobstore::get() in mononoke 2020-05-06 00:55:07 -07:00
megarepolib autocargo: regenerate 2020-05-19 16:08:40 -07:00
mercurial autocargo: regenerate 2020-05-19 16:08:40 -07:00
metaconfig metaconfig/parser: clean up conversion functions 2020-06-02 09:30:04 -07:00
microwave metaconfig/parser: use free functions for loading configuration 2020-06-02 09:30:03 -07:00
mononoke_api/src scs_server: add track_history_across_deletions parameter 2020-05-26 05:38:55 -07:00
mononoke_types autocargo: regenerate 2020-05-19 16:08:40 -07:00
mutable_counters admin: add a subcommand to manipulate mutable_counters 2020-04-16 03:19:44 -07:00
newfilenodes mononoke: rename filenodes tunables to sql_timeout_knobs 2020-06-04 01:18:18 -07:00
permission_checker mononoke/rust-shed: apply new coding style convention that separates oss-only code 2020-05-07 04:52:16 -07:00
phases Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
pushrebase tests_utils: add_file content can take ownership 2020-05-28 06:22:33 -07:00
reachabilityindex autocargo: regenerate 2020-05-19 16:08:40 -07:00
repo_client mononoke: process wantslfspointers from clienttelemtry 2020-06-01 15:19:36 -07:00
revset mononoke/revset: buffer loading generations 2020-06-04 01:24:08 -07:00
scs_server/src metaconfig/parser: use free functions for loading configuration 2020-06-02 09:30:03 -07:00
segmented_changelog mononoke: add IdMap::insert_many 2020-06-02 19:17:53 -07:00
server common/rust/identity_ext: unify identity parsing into a single crate 2020-06-03 13:16:24 -07:00
sshrelay Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
tests edenapi: add data subcommand to read_res 2020-06-02 12:49:18 -07:00
time_window_counter mononoke/rust-shed: apply new coding style convention that separates oss-only code 2020-05-07 04:52:16 -07:00
tunables mononoke: add filenodes_disable tunable 2020-06-02 09:22:43 -07:00
unbundle_replay autocargo: regenerate 2020-05-19 16:08:40 -07:00
walker/src metaconfig/parser: use free functions for loading configuration 2020-06-02 09:30:03 -07:00
Cargo.toml mononoke: Add logging blobstore 2020-05-15 10:28:31 -07: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