sapling/eden/mononoke
Stanislau Hlebik eb55bb4284 mononoke: make sure multiplexed blobstore write succeeds if all underlying
Summary:
We had somewhat inconsistent behaviour in multiplexed blobstore:
1) If on_put handlers are too slow (i.e. they are slower than all blobstores) then we
succeed as soon as all blobstores were successful (regardless of the value of
minimum_successful_writes). It doesn't matter if on_put handlers fail or
succeed, we've already returned success to our user.
2) However if all writes to the queue quickly fail, then we return a failure
even if writes to all blobstore were successful.

#2 seems like a change in behaviour from an old diff D17421208 (9de1de2d8b), and not a
desirable one - if blobstore sync queue is unavailable and it responds with
failures quickly, then blobstore writes will always fail even if all blobstores
are healthy.

So this diff makes it so that we always succeed if all blobstore puts were
successful, regardless of success or failures of on_put handlers.

Reviewed By: liubov-dmitrieva

Differential Revision: D29985084

fbshipit-source-id: 64338d552be45a70d9b1d16dfbe7d10346ab539c
2021-07-29 08:37:53 -07:00
..
admin third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
aliasverify third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
alpn third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
backfill_derived_data mononoke: remove dry_run functionality from backfill_derived_data 2021-07-29 02:09:58 -07:00
benchmark_filestore third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
benchmarks third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
blobimport third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
blobimport_lib third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
blobrepo Add upload bonsai changeset endpoint 2021-07-27 05:46:40 -07:00
blobrepo_utils third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
blobstore mononoke: make sure multiplexed blobstore write succeeds if all underlying 2021-07-29 08:37:53 -07:00
blobstore_healer third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
blobstore_sync_queue third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
bonsai_git_mapping third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
bonsai_globalrev_mapping third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
bonsai_hg_mapping third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
bonsai_svnrev_mapping third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
bookmarks mononoke: implement ensure_ancestors_of option for bookmarks 2021-07-27 12:47:22 -07:00
bulkops third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
cache_warmup third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
changesets third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
cmdlib third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
cmds mononoke: use bookmark subscription in derived data tailer 2021-07-29 02:09:58 -07:00
commit_rewriting third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
common third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
derived_data third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
edenapi_server third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
edenapi_service Use common response for methods with upload tokens 2021-07-28 02:16:35 -07:00
fastreplay third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
filenodes third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
filestore third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
git third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
gotham_ext third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
hgcli third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
hgproto third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
hook_tailer third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
hooks mononoke: implement ensure_ancestors_of option for bookmarks 2021-07-27 12:47:22 -07:00
lfs_import third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
lfs_import_lib third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
lfs_protocol third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
lfs_server third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
manifest third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
megarepo_api mononoke: log resulting cs_id from megarepo calls 2021-07-29 02:33:58 -07:00
mercurial third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
metaconfig mononoke: implement ensure_ancestors_of option for bookmarks 2021-07-27 12:47:22 -07:00
microwave third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
mononoke_api third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
mononoke_api_hg Use bonsai changeset upload on client 2021-07-28 02:16:35 -07:00
mononoke_hg_sync_job third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
mononoke_types third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
mutable_counters third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
newfilenodes third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
observability third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
permission_checker third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
phases third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
pushrebase third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
pushrebase_mutation_mapping third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
quiet_stream third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
rate_limiting third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
reachabilityindex third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
regenerate_hg_filenodes third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
repo_attributes third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
repo_client third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
repo_factory third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
repo_import mononoke: implement ensure_ancestors_of option for bookmarks 2021-07-27 12:47:22 -07:00
revset third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
scs mononoke: add target_location to sync_changeset method 2021-07-28 10:03:26 -07:00
scs_server mononoke: print latest error when reading megarepo configs 2021-07-27 02:13:09 -07:00
segmented_changelog third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
server third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
sshrelay third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
statistics_collector third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
streaming_clone third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
tests Move SCS tests out of OSS 2021-07-29 05:36:40 -07:00
time_window_counter third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
tunables third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
unbundle_replay mononoke: implement ensure_ancestors_of option for bookmarks 2021-07-27 12:47:22 -07:00
upload_globalrevs third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
walker third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -07:00
Cargo.toml third-party/rust: remove patch from curl and curl-sys 2021-07-26 15:00:16 -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