sapling/eden/mononoke
Thomas Orozco c297024a52 mononoke/virtually_sharded_blobstore: do not delay reads for uncacheable data
Summary:
The goal of this blobstore is to dedupe reads by waiting for them to finish and
hit cache instead (and also to dedupe writes, but that's not relevant here).

However, this is not a desirable feature if a blob cannot be stored in cache,
because then we're serializing accesses for no good reason. So, when that
happens, we store "this cannot be stored in cache", and we release reads
immediately.

Reviewed By: farnz

Differential Revision: D22285269

fbshipit-source-id: be7f1c73dc36b6d58c5075172e5e3c5764eed894
2020-07-03 05:53:10 -07:00
..
backsyncer bookmarks: rework Bookmarks traits 2020-07-02 07:53:12 -07:00
benchmark bookmarks: rework Bookmarks traits 2020-07-02 07:53:12 -07:00
blobimport_lib bookmarks: rename BookmarkHgKind to BookmarkKind 2020-07-01 11:08:43 -07:00
blobrepo bookmarks: add 'pagination' filter to 'list' 2020-07-02 07:53:12 -07:00
blobrepo_utils Switch Loadable and Storable interfaces to new-style futures 2020-06-25 08:45:37 -07:00
blobstore mononoke/virtually_sharded_blobstore: do not delay reads for uncacheable data 2020-07-03 05:53:10 -07:00
blobstore_sync_queue blobstore_healer: log the speed with which queue rows are deleted 2020-07-03 05:09:56 -07:00
bonsai_git_mapping mononoke: check conflicts correctly when doing bulk adds in transaction 2020-07-02 05:31:29 -07:00
bonsai_globalrev_mapping Switch Loadable and Storable interfaces to new-style futures 2020-06-25 08:45:37 -07:00
bonsai_hg_mapping eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
bookmarks bookmarks: add 'pagination' filter to 'list' 2020-07-02 07:53:12 -07:00
bulkops move all mercurial content generation logic to blobrepo_hg 2020-06-22 07:29:19 -07:00
cache_warmup Switch Loadable and Storable interfaces to new-style futures 2020-06-25 08:45:37 -07:00
changesets eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
cmdlib mononoke: add an option to perform a stack move in megarepotool 2020-07-03 00:18:41 -07:00
cmds blobstore_healer: log the speed with which queue rows are deleted 2020-07-03 05:09:56 -07:00
commit_rewriting mononoke/repo_import: add rewrite_commit functionality 2020-06-30 11:39:35 -07:00
common mononoke: add MyAdmin implementation for ReplicaLagMonitor 2020-07-01 18:18:55 -07:00
derived_data mononoke: move derive_data_for_csids to derived_data_utils 2020-06-30 06:22:31 -07:00
edenapi_server mononoke: try to compress values if they above cachelib limit 2020-06-20 01:05:54 -07:00
fastreplay mononoke: add Scribe 2020-06-29 12:15:22 -07:00
filenodes eden: remove unused Rust dependencies 2020-06-17 17:55:03 -07:00
filestore Switch Blobstore to new-style futures 2020-06-26 03:54:42 -07:00
git Switch Blobstore to new-style futures 2020-06-26 03:54:42 -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 Switch Loadable and Storable interfaces to new-style futures 2020-06-25 08:45:37 -07:00
hooks bookmarks: convert to new-style BoxFutures and BoxStreams 2020-06-30 02:37:34 -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 Switch Blobstore to new-style futures 2020-06-26 03:54:42 -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 Switch Blobstore to new-style futures 2020-06-26 03:54:42 -07:00
megarepolib mononoke: add an option to perform a stack move in megarepotool 2020-07-03 00:18:41 -07:00
mercurial Switch Blobstore to new-style futures 2020-06-26 03:54:42 -07:00
metaconfig Sync hook_type change from D22282802 2020-06-30 11:20:54 -07:00
microwave Switch Blobstore to new-style futures 2020-06-26 03:54:42 -07:00
mononoke_api mononoke_api: bypass cache for old bookmark location in move_bookmark 2020-07-02 11:01:04 -07:00
mononoke_types Switch Blobstore to new-style futures 2020-06-26 03:54:42 -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 bookmarks: convert to new-style BoxFutures and BoxStreams 2020-06-30 02:37:34 -07:00
pushrebase bookmarks: rework Bookmarks traits 2020-07-02 07:53:12 -07:00
reachabilityindex Switch Blobstore to new-style futures 2020-06-26 03:54:42 -07:00
repo_client bookmarks: rework Bookmarks traits 2020-07-02 07:53:12 -07:00
repo_import mononoke/repo_import: add a packman config 2020-07-01 11:26:31 -07:00
revset BlobRepoHg extension trait. 2020-06-22 07:29:19 -07:00
scs_server/src scs_server: implement commit_list_descendant_bookmarks 2020-07-02 12:58:16 -07:00
segmented_changelog mononoke: monitor replication lag in segmented_changelog::IdMap 2020-07-01 18:18:55 -07:00
server mononoke/virtually_sharded_blobstore: a caching blobstore that deduplicates 2020-07-03 05:53:10 -07:00
sshrelay Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
tests blobstore_healer: log the speed with which queue rows are deleted 2020-07-03 05:09:56 -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 bookmarks: rework Bookmarks traits 2020-07-02 07:53:12 -07:00
walker bookmarks: add 'pagination' filter to 'list' 2020-07-02 07:53:12 -07:00
Cargo.toml mononoke/virtually_sharded_blobstore: a caching blobstore that deduplicates 2020-07-03 05:53:10 -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