sapling/eden/mononoke
Mark Thomas 9a6ed4b6ca mutationstore: deal with history being extended backwards
Summary:
If the first client to send mutation data for a commit is only aware of partial
history for that commit, the primordial commit that is determined will be the
earliest of those commits.  If another client comes along later with a longer
history, the new set of commits will be assigned a different primordial commit.

Make sure that when this happens, we still fetch the full history.  We do this
by including the successor in the search-by-primordial case, which allows us
to join together disconnected histories at the cost of one extra round-trip to
the database.

Note that the fast path for addition of a single mutation will not fill in the
missing history.  This is an acceptable trade-off for the faster performance
in the usual case.

Reviewed By: mitrandir77

Differential Revision: D22206317

fbshipit-source-id: 49141d38844d6cddc543b6388f0c31dbc70dcbc5
2020-06-25 06:29:15 -07:00
..
backsyncer backsyncer: get rid of backsync_many 2020-06-25 03:28:08 -07:00
benchmark move all mercurial content generation logic to blobrepo_hg 2020-06-22 07:29:19 -07:00
blobimport_lib move all mercurial content generation logic to blobrepo_hg 2020-06-22 07:29:19 -07:00
blobrepo mononoke: fix broken blobrepo override refactor 2020-06-23 08:10:13 -07:00
blobrepo_utils move DangerousOverride into a separate crate blobrepo_override 2020-06-22 07:29:19 -07:00
blobstore mononoke: add link support to CountedBlobstore 2020-06-22 03:15:53 -07:00
blobstore_sync_queue mononoke: blobstore_sync_queue: switch to insert rather than insert ignore 2020-06-10 19:29:41 -07:00
bonsai_git_mapping eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
bonsai_globalrev_mapping move Globalrev for mercurial_types to mononoke_types 2020-06-22 07:29:19 -07:00
bonsai_hg_mapping eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
bookmarks move DangerousOverride into a separate crate blobrepo_override 2020-06-22 07:29:19 -07:00
bulkops move all mercurial content generation logic to blobrepo_hg 2020-06-22 07:29:19 -07:00
cache_warmup move Filenodes to BlobRepo::attributes 2020-06-22 07:29:19 -07:00
changesets eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
cmdlib xrepo: add CommitSyncerArgs 2020-06-25 03:28:08 -07:00
cmds mononoke/blobstore_healer: limit concurrency of healing 2020-06-23 09:00:29 -07:00
commit_rewriting xrepo: add CommitSyncerArgs 2020-06-25 03:28:08 -07:00
common make it possible to store arbitrary type in blobrepo with dependency on it 2020-06-22 07:29:19 -07:00
derived_data move DangerousOverride into a separate crate blobrepo_override 2020-06-22 07:29:19 -07:00
edenapi_server mononoke: try to compress values if they above cachelib limit 2020-06-20 01:05:54 -07:00
fastreplay mononoke: pass PushParams to MononokeRepo 2020-06-25 05:51:29 -07:00
filenodes eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
filestore mononoke: add blobstore link trait 2020-06-17 02:35:03 -07:00
git mononoke/git: moved fn gitimport to import_tools 2020-06-23 05:16:01 -07:00
gotham_ext mononoke/lfs_server: support the client not having the data it wants to send us 2020-06-24 10:02:01 -07:00
hgcli mononoke: add Cargo.toml files for code previously depending on identity_ext 2020-06-10 18:16:04 -07:00
hgproto edenapi_server: rename the subtree endpoint to complete_trees 2020-06-15 13:40:44 -07:00
hook_tailer eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
hooks eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
lfs_import_lib autocargo: regenerate 2020-05-19 16:08:40 -07:00
lfs_protocol mononoke: try to compress values if they above cachelib limit 2020-06-20 01:05:54 -07:00
lfs_server mononoke/lfs_server: automatically consume HTTP response bodies when dropped 2020-06-24 10:02:02 -07:00
load_limiter mononoke/configerator structs: change the OSS folder where configerator structs are saved 2020-06-24 09:38:46 -07:00
manifest BlobRepoHg extension trait. 2020-06-22 07:29:19 -07:00
megarepolib move all mercurial content generation logic to blobrepo_hg 2020-06-22 07:29:19 -07:00
mercurial mutationstore: deal with history being extended backwards 2020-06-25 06:29:15 -07:00
metaconfig mononoke: pass PushParams to MononokeRepo 2020-06-25 05:51:29 -07:00
microwave move DangerousOverride into a separate crate blobrepo_override 2020-06-22 07:29:19 -07:00
mononoke_api move all mercurial content generation logic to blobrepo_hg 2020-06-22 07:29:19 -07:00
mononoke_types move Globalrev for mercurial_types to mononoke_types 2020-06-22 07:29:19 -07:00
mutable_counters admin: add a subcommand to manipulate mutable_counters 2020-04-16 03:19:44 -07:00
newfilenodes eden: manual dependency fixes 2020-06-17 17:55:04 -07:00
permission_checker mononoke: replace instances of whitelist/blacklist/blackhole 2020-06-10 19:29:30 -07:00
phases remove HgPhase type 2020-06-22 13:51:33 -07:00
pushrebase move DangerousOverride into a separate crate blobrepo_override 2020-06-22 07:29:19 -07:00
reachabilityindex mononoke: yield if we do a lot of skips in skiplist 2020-06-22 09:20:40 -07:00
repo_client mononoke: allow pushing only a single bookmark during push 2020-06-25 05:51:30 -07:00
repo_import eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
revset BlobRepoHg extension trait. 2020-06-22 07:29:19 -07:00
scs_server/src rust/thrift: add an option to stop processing requests if client disconnected, take 2 2020-06-15 07:17:12 -07:00
segmented_changelog eden: manual dependency fixes 2020-06-17 17:55:04 -07:00
server mononoke: pass PushParams to MononokeRepo 2020-06-25 05:51:29 -07:00
sshrelay Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
tests mononoke: allow pushing only a single bookmark during push 2020-06-25 05:51:30 -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/configerator structs: change the OSS folder where configerator structs are saved 2020-06-24 09:38:46 -07:00
unbundle_replay BlobRepoHg extension trait. 2020-06-22 07:29:19 -07:00
walker BlobRepoHg extension trait. 2020-06-22 07:29:19 -07:00
Cargo.toml commmit_rewriting: introduce live_commit_sync_config 2020-06-25 03:28:08 -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