sapling/eden/mononoke
Yan Soares Couto b5184cbb2d Endpoint for downloading file from upload token
Summary:
This diff adds an endpoint `/download/file` that allows to download a file given an upload token.

This will be used for snapshots, as we need to download the snapshot changes, and there's no way to do that right now.

Other options, and why I didn't do them:
- Using the existing `/files` endpoint: Not possible, as it needs hg filenodes and we don't have those.
- Returning the file contents in the fetch_snapshot request: Might make the response too big
- Returning just a single Bytes instead of a stream: I thought streaming would be preferred, and more future proof. In the stack I still put everything in memory in the client, but maybe in the future it should be possible to stream it directly to the file. I'm happy to remove if preferred, though.

Reviewed By: StanislavGlebik

Differential Revision: D30582411

fbshipit-source-id: f9423bc42867402d380e831bc45d3ce3b3825434
2021-09-09 10:04:40 -07:00
..
admin third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
aliasverify third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
alpn third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
backfill_derived_data Daily common/rust/cargo_from_buck/bin/autocargo 2021-09-09 09:03:15 -07:00
benchmark_filestore third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
benchmarks mononoke: add benchmark mode to backfill_derived_data 2021-09-09 05:01:18 -07:00
blobimport third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
blobimport_lib third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
blobrepo third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
blobrepo_utils third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
blobstore third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
blobstore_healer third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
blobstore_sync_queue third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
bonsai_git_mapping third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
bonsai_globalrev_mapping third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
bonsai_hg_mapping third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
bonsai_svnrev_mapping third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
bookmarks third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
bulkops third-party/rust: update strum 2021-09-02 11:26:28 -07:00
cache_warmup third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
changesets third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
cmdlib Allow more read-connection-types when creating SqlConnections 2021-09-06 14:40:47 -07:00
cmds mononoke: add benchmark mode to backfill_derived_data 2021-09-09 05:01:18 -07:00
commit_rewriting third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
common third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
derived_data mononoke: add benchmark mode to backfill_derived_data 2021-09-09 05:01:18 -07:00
edenapi_server third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
edenapi_service Endpoint for downloading file from upload token 2021-09-09 10:04:40 -07:00
fastreplay third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
filenodes third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
filestore third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
git third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
gotham_ext edenapi_service: automatically compress EdenApiHandler responses 2021-09-08 11:33:19 -07:00
hgcli third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
hgproto third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
hook_tailer third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
hooks third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
lfs_import third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
lfs_import_lib third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
lfs_protocol third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
lfs_server third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
manifest third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
megarepo_api third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
mercurial third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
metaconfig third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
microwave third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
mononoke_api third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
mononoke_api_hg Endpoint for downloading file from upload token 2021-09-09 10:04:40 -07:00
mononoke_hg_sync_job third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
mononoke_types third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
mutable_counters third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
mutable_renames third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
newfilenodes third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
observability third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
permission_checker third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
phases third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
pushrebase third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
pushrebase_mutation_mapping third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
quiet_stream third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
rate_limiting third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
reachabilityindex third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
regenerate_hg_filenodes filenodes: store repo_id and update to new futures 2021-09-07 07:44:28 -07:00
repo_attributes dangerous_override: override blobstore in derived data manager 2021-09-07 07:44:27 -07:00
repo_client third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
repo_factory third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
repo_import third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
revset third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
scs third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
scs_server Upload snapshot to ephemeral blobstore 2021-08-24 09:02:26 -07:00
segmented_changelog third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
server third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
sshrelay third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
statistics_collector third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
streaming_clone third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
tests add graph endpoint 2021-09-07 19:53:04 -07:00
time_window_counter third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
tunables third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
unbundle_replay third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
upload_globalrevs third-party/rust: update daemonize to 0.5 2021-09-02 06:27:03 -07:00
walker third-party/rust: Update thiserror from 1.0.23 to 1.0.29 2021-09-08 20:49:35 -07:00
Cargo.toml Daily common/rust/cargo_from_buck/bin/autocargo 2021-09-07 01:43:29 -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