sapling/eden/mononoke
Mark Juggurnauth-Thomas 6b16e16fa9 blobrepo: convert to facet container
Summary:
Convert `BlobRepo` to a `facet::container`.  This will allow it to be built
from an appropriate facet factory.

This only changes the definition of the structure: we still use
`blobrepo_factory` to construct it.  The main difference is in the types
of the attributes, which change from `Arc<dyn Trait>` to
`Arc<dyn Trait + Send + Sync + 'static`>, specified by the `ArcTrait` alias
generated by the `#[facet::facet]` macro.

Reviewed By: StanislavGlebik

Differential Revision: D27169437

fbshipit-source-id: 3496b6ee2f0d1e72a36c9e9eb9bd3d0bb7beba8b
2021-03-25 07:34:49 -07:00
..
alpn autocargo v1: changes to match autocargo v2 generation results. 2021-02-19 11:03:55 -08:00
benchmarks blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
blobimport_lib blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
blobrepo blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
blobrepo_utils third-party/rust: update futures 2021-03-04 06:42:55 -08:00
blobstore Modern futures for SQLBlob construction 2021-03-25 04:14:17 -07:00
blobstore_sync_queue vfs: introduce AsyncVfs 2021-03-05 21:47:51 -08:00
bonsai_git_mapping blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
bonsai_globalrev_mapping blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
bonsai_hg_mapping blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
bonsai_svnrev_mapping blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
bookmarks blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
bulkops bounded_traversal: require futures to be boxed 2021-03-12 08:12:57 -08:00
cache_warmup third-party/rust: update futures 2021-03-04 06:42:55 -08:00
changesets blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
cmdlib Add support for backup-repo-name argument 2021-03-25 06:45:25 -07:00
cmds blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
commit_rewriting blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
common mononoke/mysql: group ODS counters by shardmap 2021-03-23 11:07:26 -07:00
derived_data blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
edenapi_server third-party/rust: update futures 2021-03-04 06:42:55 -08:00
edenapi_service mononoke/edenapi_service: sample trivial tree requests 2021-03-18 08:14:12 -07:00
fastreplay third-party/rust: update futures 2021-03-04 06:42:55 -08:00
filenodes blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
filestore blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
git blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
gotham_ext mononoke/lfs_server: add support for Range 2021-03-23 03:20:35 -07:00
hgcli third-party/rust: update futures 2021-03-04 06:42:55 -08:00
hgproto third-party/rust: update futures 2021-03-04 06:42:55 -08:00
hook_tailer third-party/rust: update futures 2021-03-04 06:42:55 -08:00
hooks mononoke: make it possible to allow moving a bookmark for a hipster group 2021-03-18 13:05:11 -07:00
lfs_import_lib third-party/rust: update futures 2021-03-04 06:42:55 -08:00
lfs_protocol Format fbsource with rustfmt-2.0.0-rc.2 2021-02-27 18:46:09 -08:00
lfs_server mononoke/lfs_server: add support for Range 2021-03-23 03:20:35 -07:00
load_limiter vfs: introduce AsyncVfs 2021-03-05 21:47:51 -08:00
manifest bounded_traversal: require futures to be boxed 2021-03-12 08:12:57 -08:00
mercurial blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
metaconfig blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
microwave blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
mononoke_api mononoke/filestore: expose Range as an input in range fetches 2021-03-23 03:20:35 -07:00
mononoke_api_hg edenapi_server: add bookmark endpoint 2021-03-12 12:07:35 -08:00
mononoke_hg_sync_job Add support for backup-repo-name argument 2021-03-25 06:45:25 -07:00
mononoke_types bounded_traversal: require futures to be boxed 2021-03-12 08:12:57 -08:00
mutable_counters third-party/rust: update futures 2021-03-04 06:42:55 -08:00
newfilenodes mononoke/newfilenodes: sort filenode rows prior to insertion 2021-03-24 13:55:01 -07:00
observability autocargo v1: reformating of oss-dependencies, workspace and patch sections and thrift files to match v2 2021-02-25 15:10:56 -08:00
permission_checker mononoke: make it possible to allow moving a bookmark for a hipster group 2021-03-18 13:05:11 -07:00
phases blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
pushrebase blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
reachabilityindex vfs: introduce AsyncVfs 2021-03-05 21:47:51 -08:00
regenerate_hg_filenodes third-party/rust: update futures 2021-03-04 06:42:55 -08:00
repo_attributes repo_derived_data: add new repo attribute to encapsulate derived data 2021-03-22 07:26:48 -07:00
repo_client mononoke: add a tunable to limit the number of commits in a push 2021-03-22 15:41:06 -07:00
repo_import blobrepo: make attributes real members again 2021-03-22 07:26:47 -07:00
revset vfs: introduce AsyncVfs 2021-03-05 21:47:51 -08:00
scs_server scs_server: log when requests are cancelled 2021-03-16 13:04:32 -07:00
segmented_changelog blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
server bump region2region QPS 2021-03-22 10:12:43 -07:00
sshrelay third-party/rust: update futures 2021-03-04 06:42:55 -08:00
streaming_clone mononoke: init cachelib only once and add more logging 2021-03-16 06:20:00 -07:00
tests blobrepo: convert to facet container 2021-03-25 07:34:49 -07:00
time_window_counter vfs: introduce AsyncVfs 2021-03-05 21:47:51 -08:00
tunables Use Manifold direct reads and weak consistency 2021-03-24 03:56:25 -07:00
unbundle_replay blobrepo: make attributes real members again 2021-03-22 07:26:47 -07:00
walker Autocargo-ed serde_php (#80) 2021-03-16 07:52:34 -07:00
Cargo.toml bump region2region QPS 2021-03-22 10:12:43 -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