sapling/eden/mononoke/Cargo.toml
Thomas Orozco 0f44a4f106 mononoke: update to tokio 1.x
Summary:
NOTE: there is one final pre-requisite here, which is that we should default all Mononoke binaries to `--use-mysql-client` because the other SQL client implementations will break once this lands. That said, this is probably the right time to start reviewing.

There's a lot going on here, but Tokio updates being what they are, it has to happen as just one diff (though I did try to minimize churn by modernizing a bunch of stuff in earlier diffs).

Here's a detailed list of what is going on:

- I had to add a number `cargo_toml_dir` for binaries in `eden/mononoke/TARGETS`, because we have to use 2 versions of Bytes concurrently at this time, and the two cannot co-exist in the same Cargo workspace.
- Lots of little Tokio changes:
  - Stream abstractions moving to `tokio-stream`
  - `tokio::time::delay_for` became `tokio::time::sleep`
  - `tokio::sync::Sender::send` became `tokio::sync::Sender::broadcast`
  - `tokio::sync::Semaphore::acquire` returns a `Result` now.
  - `tokio::runtime::Runtime::block_on` no longer takes a `&mut self` (just a `&self`).
  - `Notify` grew a few more methods with different semantics. We only use this in tests, I used what seemed logical given the use case.
- Runtime builders have changed quite a bit:
  - My `no_coop` patch is gone in Tokio 1.x, but it has a new `tokio::task::unconstrained` wrapper (also from me), which I included on  `MononokeApi::new`.
  - Tokio now detects your logical CPUs, not physical CPUs, so we no longer need to use `num_cpus::get()` to figure it out.
- Tokio 1.x now uses Bytes 1.x:
  - At the edges (i.e. streams returned to Hyper or emitted by RepoClient), we need to return Bytes 1.x. However, internally we still use Bytes 0.5 in some places (notably: Filestore).
  - In LFS, this means we make a copy. We used to do that a while ago anyway (in the other direction) and it was never a meaningful CPU cost, so I think this is fine.
  - In Mononoke Server it doesn't really matter because that still generates ... Bytes 0.1 anyway so there was a copy before from 0.1 to 0.5 and it's from 0.1 to 1.x.
  - In the very few places where we read stuff using Tokio from the outside world (historical import tools for LFS), we copy.
- tokio-tls changed a lot, they removed all the convenience methods around connecting. This resulted in updates to:
  - How we listen in Mononoke Server & LFS
  - How we connect in hgcli.
  - Note: all this stuff has test coverage.
- The child process API changed a little bit. We used to have a ChildWrapper around the hg sync job to make a Tokio 0.2.x child look more like a Tokio 1.x Child, so now we can just remove this.
- Hyper changed their Websocket upgrade mechanism (you now need the whole `Request` to upgrade, whereas before that you needed just the `Body`, so I changed up our code a little bit in Mononoke's HTTP acceptor to defer splitting up the `Request` into parts until after we know whether we plan to upgrade it.
- I removed the MySQL tests that didn't use mysql client, because we're leaving that behind and don't intend to support it on Tokio 1.x.

Reviewed By: mitrandir77

Differential Revision: D26669620

fbshipit-source-id: acb6aff92e7f70a7a43f32cf758f252f330e60c9
2021-04-28 07:36:31 -07:00

357 lines
12 KiB
TOML

[package]
name = "eden_mononoke"
version = "0.1.0"
authors = ["Facebook"]
edition = "2018"
license = "GPLv2+"
[[bin]]
name = "backfill_mapping"
path = "cmds/backfill_mapping.rs"
[[bin]]
name = "benchmark_storage_config"
path = "cmds/benchmark_storage_config/main.rs"
[[bin]]
name = "bonsai_verify"
path = "cmds/bonsai_verify/main.rs"
test = false
[[bin]]
name = "configlint"
path = "cmds/configlint.rs"
[[bin]]
name = "dumprev"
path = "cmds/dumprev.rs"
test = false
[[bin]]
name = "idxdump"
path = "cmds/idxdump.rs"
test = false
[[bin]]
name = "manual_scrub"
path = "cmds/manual_scrub/main.rs"
[[bin]]
name = "packer"
path = "cmds/packer/main.rs"
[[bin]]
name = "rechunker"
path = "cmds/rechunker.rs"
[[bin]]
name = "revlogrepo"
path = "cmds/revlogrepo.rs"
[[bin]]
name = "segmented_changelog_seeder"
path = "cmds/segmented_changelog_seeder.rs"
[[bin]]
name = "segmented_changelog_tailer"
path = "cmds/segmented_changelog_tailer.rs"
[[bin]]
name = "sqlblob_gc"
path = "cmds/sqlblob_gc/main.rs"
[[bin]]
name = "streaming_clone_warmup"
path = "cmds/streaming_clone_warmup/main.rs"
[dependencies]
anyhow = "1.0"
ascii = "1.0"
async-compression = { version = "0.3", features = ["all"] }
blobrepo = { version = "0.1.0", path = "blobrepo" }
blobrepo_hg = { version = "0.1.0", path = "blobrepo/blobrepo_hg" }
blobrepo_utils = { version = "0.1.0", path = "blobrepo_utils" }
blobstore = { version = "0.1.0", path = "blobstore" }
blobstore_factory = { version = "0.1.0", path = "blobstore/factory" }
bookmarks = { version = "0.1.0", path = "bookmarks" }
bytesize = "1.0"
cacheblob = { version = "0.1.0", path = "blobstore/cacheblob" }
cached_config = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
cachelib = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
clap = "2.33"
cloned = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
cmdlib = { version = "0.1.0", path = "cmdlib" }
context = { version = "0.1.0", path = "server/context" }
criterion = "=0.3.1"
derive_more = "0.99.3"
environment = { version = "0.1.0", path = "cmdlib/environment" }
failure_ext = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
fbinit = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
filestore = { version = "0.1.0", path = "filestore" }
futures = { version = "0.3.13", features = ["async-await", "compat"] }
futures-old = { package = "futures", version = "0.1.31" }
futures-util = "0.3.7"
itertools = "0.8"
lock_ext = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
mercurial_derived_data = { version = "0.1.0", path = "derived_data/mercurial_derived_data" }
mercurial_revlog = { version = "0.1.0", path = "mercurial/revlog" }
mercurial_types = { version = "0.1.0", path = "mercurial/types" }
metaconfig_types = { version = "0.1.0", path = "metaconfig/types" }
mononoke_types = { version = "0.1.0", path = "mononoke_types" }
packblob = { version = "0.1.0", path = "blobstore/packblob" }
prefixblob = { version = "0.1.0", path = "blobstore/prefixblob" }
rand = { version = "0.7", features = ["small_rng"] }
repo_factory = { version = "0.1.0", path = "repo_factory" }
revset = { version = "0.1.0", path = "revset" }
scuba_ext = { version = "0.1.0", path = "common/scuba_ext" }
segmented_changelog = { version = "0.1.0", path = "segmented_changelog" }
serde = { version = "=1.0.118", features = ["derive", "rc"] }
serde_derive = "1.0"
slog = { version = "2.5", features = ["max_level_debug"] }
sql_construct = { version = "0.1.0", path = "common/sql_construct" }
sql_ext = { version = "0.1.0", path = "common/rust/sql_ext" }
sqlblob = { version = "0.1.0", path = "blobstore/sqlblob" }
streaming_clone = { version = "0.1.0", path = "repo_client/streaming_clone" }
tempfile = "3.1"
tokio = { version = "1.4", features = ["full", "test-util"] }
tokio-stream = { version = "0.1.4", features = ["fs", "io-util", "net", "sync", "time"] }
toml = "=0.5.7"
[patch.crates-io]
addr2line = { git = "https://github.com/gimli-rs/addr2line.git", rev = "0b6b6018b5b252a18e628fba03885f7d21844b3c" }
async-compression = { git = "https://github.com/ahornby/async-compression", rev = "c7fe7f9512e742f0c0097a19de0fca89da140b31" }
bytecount = { git = "https://github.com/llogiq/bytecount", rev = "469eaf8395c99397cd64d059737a9054aa014088" }
chashmap = { git = "https://gitlab.redox-os.org/ahornby/chashmap", rev = "901ace2ca3cdbc2095adb1af111d211e254e2aae" }
const-random = { git = "https://github.com/fbsource/const-random", rev = "374c5b46427fe2ffbf6acbd9c1687e0f1a809f95" }
curl = { git = "https://github.com/kulshrax/curl-rust", rev = "2a15bbd8dbbd54734313fa703a64db7ce6ddaff0" }
curl-sys = { git = "https://github.com/kulshrax/curl-rust", rev = "2a15bbd8dbbd54734313fa703a64db7ce6ddaff0" }
enumset = { git = "https://github.com/danobi/enumset", rev = "4c01c583c27a725948fededbfb3461c572a669a4" }
gotham-02 = { package = "gotham", git = "https://github.com/krallin/gotham-02.git", rev = "1eb3b976c31e7e4334b188f3abfa5cc2e5cae033" }
gotham_derive-02 = { package = "gotham_derive", git = "https://github.com/krallin/gotham-02.git", rev = "1eb3b976c31e7e4334b188f3abfa5cc2e5cae033" }
hyper-02 = { package = "hyper", version = "0.13.10", git = "https://github.com/krallin/hyper-02.git", rev = "9c9453c5ae3e92de4ba30edd81bb45371b8fa8d6" }
lru-disk-cache = { git = "https://github.com/mozilla/sccache", rev = "033ebaae69beeb0ac04e8c35d6ff1103487bd9a3" }
openssl = { git = "https://github.com/sfackler/rust-openssl", rev = "68fc8ba890d77986b06ca5ce29d1089285fbbcf9" }
openssl-sys = { git = "https://github.com/sfackler/rust-openssl", rev = "68fc8ba890d77986b06ca5ce29d1089285fbbcf9" }
petgraph = { git = "https://github.com/jkeljo/petgraph", rev = "e3e9dd8632d23973fdc0b42c1117d5e5fc5fa384" }
prost = { git = "https://github.com/gabrielrussoc/prost", branch = "protoc-runtime" }
prost-build = { git = "https://github.com/gabrielrussoc/prost", branch = "protoc-runtime" }
prost-derive = { git = "https://github.com/gabrielrussoc/prost", branch = "protoc-runtime" }
prost-types = { git = "https://github.com/gabrielrussoc/prost", branch = "protoc-runtime" }
r2d2_sqlite = { git = "https://github.com/jsgf/r2d2-sqlite.git", rev = "6d77a828ca0a3c507a3f58561532a1b6c66c7918" }
rustfilt = { git = "https://github.com/jsgf/rustfilt.git", rev = "8141fa7f1caee562ee8daffb2ddeca3d1f0d36e5" }
tokio-02 = { package = "tokio", version = "0.2.25", git = "https://github.com/krallin/tokio.git", rev = "818f943db36e32b7c928351c32fe69ac913409f9" }
tokio-compat = { package = "tokio-compat", version = "0.1.6", git = "https://github.com/krallin/tokio-compat.git", rev = "c2330c2a0141353e467cc5861988daa2eae7cb54" }
tokio-core = { git = "https://github.com/bolinfest/tokio-core", rev = "5f37aa3c627d56ee49154bc851d6930f5ab4398f" }
toml = { git = "https://github.com/jsgf/toml-rs", branch = "dotted-table-0.5.7" }
[workspace]
members = [
".",
"admin",
"aliasverify",
"alpn",
"backfill_derived_data",
"benchmark_filestore",
"benchmarks/derived_data",
"benchmarks/simulated_repo",
"blobimport",
"blobimport_lib",
"blobimport_lib/consts",
"blobrepo",
"blobrepo/blobrepo_hg",
"blobrepo/blobsync",
"blobrepo/changeset_fetcher",
"blobrepo/common",
"blobrepo/errors",
"blobrepo/override",
"blobrepo/repo_blobstore",
"blobrepo_utils",
"blobstore",
"blobstore/blobstore_stats",
"blobstore/cacheblob",
"blobstore/chaosblob",
"blobstore/delayblob",
"blobstore/factory",
"blobstore/fileblob",
"blobstore/if",
"blobstore/logblob",
"blobstore/memblob",
"blobstore/multiplexedblob",
"blobstore/packblob",
"blobstore/packblob/if",
"blobstore/prefixblob",
"blobstore/readonlyblob",
"blobstore/redactedblobstore",
"blobstore/samplingblob",
"blobstore/sqlblob",
"blobstore/throttledblob",
"blobstore/virtually_sharded_blobstore",
"blobstore_healer",
"blobstore_sync_queue",
"bonsai_git_mapping",
"bonsai_git_mapping/git_mapping_pushrebase_hook",
"bonsai_globalrev_mapping",
"bonsai_globalrev_mapping/globalrev_pushrebase_hook",
"bonsai_globalrev_mapping/if",
"bonsai_hg_mapping",
"bonsai_hg_mapping/if",
"bonsai_svnrev_mapping",
"bonsai_svnrev_mapping/if",
"bookmarks",
"bookmarks/bookmarks_movement",
"bookmarks/bookmarks_types",
"bookmarks/dbbookmarks",
"bookmarks/warm_bookmarks_cache",
"bulkops",
"bulkops/bench",
"cache_warmup",
"changesets",
"changesets/if",
"cmdlib",
"cmdlib/environment",
"cmdlib/x_repo",
"cmds/copy_blobstore_keys",
"commit_rewriting/backsyncer",
"commit_rewriting/bookmark_renaming",
"commit_rewriting/bookmarks_validator",
"commit_rewriting/commit_validator",
"commit_rewriting/cross_repo_sync",
"commit_rewriting/cross_repo_sync/test_utils",
"commit_rewriting/live_commit_sync_config",
"commit_rewriting/megarepo",
"commit_rewriting/mononoke_x_repo_sync_job",
"commit_rewriting/movers",
"commit_rewriting/synced_commit_mapping",
"common/allocation_tracing",
"common/async_limiter",
"common/async_limiter/examples/tokio_v2",
"common/bounded_traversal",
"common/copy_utils",
"common/dedupmap",
"common/futures_watchdog",
"common/iterhelpers",
"common/rendezvous",
"common/rust/caching_ext",
"common/rust/slog_ext",
"common/rust/sql_ext",
"common/scribe_ext",
"common/scuba_ext",
"common/sql_construct",
"common/timeseries",
"common/topo_sort",
"common/type_map",
"common/uniqueheap",
"derived_data",
"derived_data/blame",
"derived_data/changeset_info",
"derived_data/changeset_info/if",
"derived_data/deleted_files_manifest",
"derived_data/fastlog",
"derived_data/filenodes",
"derived_data/fsnodes",
"derived_data/mercurial_derived_data",
"derived_data/skeleton_manifest",
"derived_data/test_utils",
"derived_data/unodes",
"derived_data/utils",
"edenapi_server",
"edenapi_service",
"fastreplay",
"filenodes",
"filenodes/if",
"filestore",
"git/git-pool",
"git/git_types",
"git/git_types/if",
"git/gitimport",
"git/import_tools",
"gotham_ext",
"hgcli",
"hgproto",
"hook_tailer",
"hooks",
"hooks/content-stores",
"hooks/hook_manager_factory",
"lfs_import",
"lfs_import_lib",
"lfs_protocol",
"lfs_server",
"load_limiter",
"manifest",
"megarepo_api/configo_client",
"megarepo_api/megarepo_config",
"megarepo_api/megarepo_error",
"mercurial/bundle_replay_data",
"mercurial/bundles",
"mercurial/mutation",
"mercurial/revlog",
"mercurial/types",
"mercurial/types/if",
"mercurial/types/mocks",
"metaconfig/parser",
"metaconfig/types",
"microwave",
"microwave/builder",
"microwave/if",
"mononoke_api",
"mononoke_api_hg",
"mononoke_hg_sync_job",
"mononoke_types",
"mononoke_types/if",
"mononoke_types/mocks",
"mutable_counters",
"newfilenodes",
"observability",
"permission_checker",
"phases",
"pushrebase",
"pushrebase/pushrebase_hook",
"pushrebase_mutation_mapping",
"quiet_stream",
"reachabilityindex",
"reachabilityindex/common",
"reachabilityindex/if",
"reachabilityindex/skiplist",
"reachabilityindex/test-helpers",
"regenerate_hg_filenodes",
"repo_attributes/repo_derived_data",
"repo_attributes/repo_identity",
"repo_client",
"repo_client/getbundle_response",
"repo_client/mononoke_repo",
"repo_client/obsolete",
"repo_client/remotefilelog",
"repo_client/repo_read_write_status",
"repo_client/reverse_filler_queue",
"repo_client/scribe_commit_queue",
"repo_client/streaming_clone",
"repo_client/unbundle",
"repo_client/wirepack",
"repo_factory",
"repo_factory/test_repo_factory",
"repo_import",
"revset",
"revset/revset-test-helper",
"segmented_changelog",
"segmented_changelog/bench/concurrent_idmap",
"segmented_changelog/types",
"server",
"server/context",
"server/monitoring",
"server/qps",
"server/repo_listener",
"server/session_id",
"sshrelay",
"statistics_collector",
"streaming_clone",
"tests/fixtures",
"tests/utils",
"tests/write_stub_log_entry",
"time_window_counter",
"tunables",
"tunables/tunables-derive",
"unbundle_replay",
"upload_globalrevs",
"walker",
]