sapling/eden/mononoke
Mark Thomas c6a7a35c2a scs_server: add AsyncIntoResponseWith trait
Summary:
Sometimes the `AsyncIntoResponse` trait needs additional data (e.g. the set of commit
identity schemes the client is interested in) to convert the item into the response
type.

Currently we use a tuple of `(item, &additional_data)` to work around this, however
this will become less readable as we add new items with more additional data.

Split this use-case out into a new trait: `AsyncIntoResponseWith`.  This defines
an associated type which is the type of the additional data needed, and provides a
new method `into_response_with`, where a reference to the additional data can be
provided.

Note that conversions for tuple types that are logical `(name, value)` or `(id,
value)` pairs are still ok.  It is specifically the case where we have `(item,
&additional_data)` that we are converting here (i.e. the additional data merely
informs the conversion, it is not part of the resulting response value).

Reviewed By: aslpavel

Differential Revision: D23813371

fbshipit-source-id: c0dcfe826288ad53ad572ae4dd956540605998f5
2020-09-21 08:39:12 -07:00
..
benchmark blobrepo: instantiate segmented changelog as an attribute 2020-09-02 17:20:42 -07:00
blobimport_lib Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
blobrepo use derived data infra to derive mercurial changesets 2020-09-11 07:23:11 -07:00
blobrepo_utils move existing changeset derivation logic to mercurial_derived_data 2020-09-09 07:56:32 -07:00
blobstore mononoke: bump memcache key for blobstore 2020-09-21 01:47:01 -07:00
blobstore_sync_queue shed/sql: make queries! macros work with new Rust mysql client 2020-09-11 06:33:37 -07:00
bonsai_git_mapping improve error messages for mapping length errors 2020-09-21 08:39:12 -07:00
bonsai_globalrev_mapping improve error messages for mapping length errors 2020-09-21 08:39:12 -07:00
bonsai_hg_mapping Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
bookmarks mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
bulkops Regenerate all Cargo.tomls after upgrade to futures 0.3.5 2020-07-06 20:49:43 -07:00
cache_warmup Regenerate all Cargo.tomls after upgrade to futures 0.3.5 2020-07-06 20:49:43 -07:00
changesets Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
cmdlib mononoke: use logical number of cpus in our runtime 2020-09-09 09:25:40 -07:00
cmds remove uneeded locks 2020-09-15 06:35:58 -07:00
commit_rewriting mononoke: add a --wait-secs parameter to catchup-head-delete subcommand 2020-09-21 06:07:57 -07:00
common mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
derived_data mononoke: remove get_fsnode_id 2020-09-18 02:52:47 -07:00
edenapi_server gotham_ext: make StreamBody take an infallible byte stream 2020-09-18 22:49:55 -07:00
fastreplay mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
filenodes Remove crate_root from Rust dependency info 2020-08-31 14:43:24 -07:00
filestore Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
git move existing changeset derivation logic to mercurial_derived_data 2020-09-09 07:56:32 -07:00
gotham_ext gotham_ext: make StreamBody take an infallible byte stream 2020-09-18 22:49:55 -07:00
hgcli mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
hgproto Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
hook_tailer mononoke: allow logging censored scuba accesses to file 2020-09-04 07:37:14 -07:00
hooks mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -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 gotham_ext: make StreamBody take an infallible byte stream 2020-09-18 22:49:55 -07:00
load_limiter Regenerate all Cargo.tomls after upgrade to futures 0.3.5 2020-07-06 20:49:43 -07:00
manifest Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
mercurial shed/sql: make queries! macros work with new Rust mysql client 2020-09-11 06:33:37 -07:00
metaconfig shed/sql: make queries! macros work with new Rust mysql client 2020-09-11 06:33:37 -07:00
microwave mononoke: allow logging censored scuba accesses to file 2020-09-04 07:37:14 -07:00
mononoke_api mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
mononoke_commitcloud_bookmarks_filler mononoke/commitcloud_bookmarks_filler: make it public (#58) 2020-09-17 07:38:53 -07:00
mononoke_hg_sync_job mononoke: use wait_for_latest_log_id_to_be_synced in x_repo_sync_job 2020-09-16 09:17:42 -07:00
mononoke_types mononoke: remove get_fsnode_id 2020-09-18 02:52:47 -07:00
mutable_counters Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
newfilenodes shed/sql: make queries! macros work with new Rust mysql client 2020-09-11 06:33:37 -07:00
permission_checker mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
phases shed/sql: make queries! macros work with new Rust mysql client 2020-09-11 06:33:37 -07:00
pushrebase Prepare for rustfmt 2.0 2020-09-08 07:33:16 -07:00
reachabilityindex impl LCAHint for Arc<impl LCAHint> 2020-09-11 16:56:13 -07:00
regenerate_hg_filenodes mononoke/regenerate_hg_filenodes: make regenerate_hg_filenodes public (#39) 2020-07-30 06:50:54 -07:00
repo_client mononoke: remove unnecessary option from into_push_redirector 2020-09-21 06:00:24 -07:00
repo_import mononoke/repo_import: include small repo call sign in SmallRepoBackSyncVars struct 2020-09-17 09:23:27 -07:00
revset Prepare for rustfmt 2.0 2020-09-08 07:33:16 -07:00
scs_server scs_server: add AsyncIntoResponseWith trait 2020-09-21 08:39:12 -07:00
segmented_changelog Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
server mononoke: fix OSS build after deprecating preamble in favor of metadata 2020-09-17 07:38:53 -07:00
sshrelay mononoke: deprecate preamble in favor of metadata 2020-09-15 10:28:38 -07:00
tests mononoke/integration tests: fix issue with missing dulwich for hggit ext (#59) 2020-09-19 05:47:30 -07: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 getbundle optimization for fetching commits with low generation 2020-09-11 07:32:26 -07:00
unbundle_replay Update formatter to rustfmt 2.0 2020-09-09 07:52:33 -07:00
walker mononoke: intern ids to reduce space used 2020-09-21 06:26:28 -07:00
Cargo.toml mononoke/commitcloud_bookmarks_filler: make it public (#58) 2020-09-17 07:38:53 -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