mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
846a983d67
Summary: Like it says in the title. The API between Bytes 1.x has changed a little bit, but the concepts are basically the same, so we just need to change the callsites that were calling `bytes()` and have them ask for `chunk()` instead. This diff attempts to be as small as it can (and it's already quite big). I didn't attempt to update *everything*: I only updated whatever was needed to keep `common/rust/tools/scripts/check_all.sh` passing. However, there are a few changes that fall out of this. I'll outline them here: ## `BufExt` One little caveat is the `copy_to_bytes` we had on `BufExt`. This was introduced into Bytes 1.x (under that name), but we can't use it here directly. The reason we can't is because the instance we have is a `Cursor<Bytes>`, which receives an implementation of `copy_from_bytes` via: ``` impl<T: AsRef<[u8]>> Buf for std::io::Cursor<T> ``` This means that implementation isn't capable of using the optimized `Bytes::copy_from_bytes` which doesn't do a copy at all. So, instead, we need to use a dedicated method on `Cursor<Bytes>`: `copy_or_reuse_bytes`. ## Calls to `Buf::to_bytes()` This method is gone in Bytes 1.x, and replaced by the idiom `x.copy_to_bytes(x.remaining())`, so I updated callsites of `to_bytes()` accordingly. ## `fbthrift_ext` This set of crates provides transports for Thrift calls that rely on Tokio 0.2 for I/O. Unfortunately, Tokio 0.2 uses Bytes 0.5, so that doesn't work well. For now, I included a copy here (there was only one required, when reading from the socket). This can be removed if we update the whole `fbthrift_ext` stack to Bytes 1.x. fanzeyi had been wanting to update this to Tokio 1.x, but was blocked on `thrift/lib/rust` using Bytes 0.5, and confirmed that the overhead of a copy here is fine (besides, this code can now be updated to Tokio 1.x to remove the copy). ## Crates using both Bytes 0.5 & Bytes 1.x This was mostly the case in Mononoke. That's no coincidence: this is why I'm working on this. There, I had to make changes that consist of removing Bytes 0.5 to Bytes 1.x copies. ## Misuse of `Buf::bytes()` Some places use `bytes()` when they probably mean to use `copy_to_bytes()`. For now, I updated those to use `chunk()`, which keeps the behavior the same but keeps the code buggy. I filed T91156115 to track fixing those (in all likelihood I will file tasks for the relevant teams). Reviewed By: dtolnay Differential Revision: D28537964 fbshipit-source-id: ca42a614036bc3cb08b21a572166c4add72520ad
63 lines
4.0 KiB
TOML
63 lines
4.0 KiB
TOML
[package]
|
|
name = "blobstore_healer"
|
|
version = "0.1.0"
|
|
authors = ["Facebook"]
|
|
edition = "2018"
|
|
license = "GPLv2+"
|
|
|
|
[[bin]]
|
|
name = "blobstore_healer"
|
|
path = "../cmds/blobstore_healer/main.rs"
|
|
|
|
[dependencies]
|
|
anyhow = "1.0"
|
|
async-trait = "0.1.45"
|
|
blobstore = { version = "0.1.0", path = "../blobstore" }
|
|
blobstore_factory = { version = "0.1.0", path = "../blobstore/factory" }
|
|
blobstore_sync_queue = { version = "0.1.0", path = "../blobstore_sync_queue" }
|
|
borrowed = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
|
|
cached_config = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
clap = "2.33"
|
|
cmdlib = { version = "0.1.0", path = "../cmdlib" }
|
|
context = { version = "0.1.0", path = "../server/context" }
|
|
fbinit = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
|
|
futures = { version = "0.3.13", features = ["async-await", "compat"] }
|
|
futures-old = { package = "futures", version = "0.1.31" }
|
|
futures_03_ext = { package = "futures_ext", version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
|
|
itertools = "0.8"
|
|
lazy_static = "1.0"
|
|
metaconfig_types = { version = "0.1.0", path = "../metaconfig/types" }
|
|
mononoke_types = { version = "0.1.0", path = "../mononoke_types" }
|
|
rand = { version = "0.7", features = ["small_rng"] }
|
|
slog = { version = "2.5", features = ["max_level_trace"] }
|
|
sql_construct = { version = "0.1.0", path = "../common/sql_construct" }
|
|
sql_ext = { version = "0.1.0", path = "../common/rust/sql_ext" }
|
|
tokio = { version = "1.5", features = ["full", "test-util"] }
|
|
|
|
[dev-dependencies]
|
|
bytes = { version = "1.0", features = ["serde"] }
|
|
fbinit-tokio = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "master" }
|
|
|
|
[patch.crates-io]
|
|
addr2line = { git = "https://github.com/gimli-rs/addr2line.git", rev = "0b6b6018b5b252a18e628fba03885f7d21844b3c" }
|
|
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" }
|
|
lru-disk-cache = { git = "https://github.com/mozilla/sccache", rev = "033ebaae69beeb0ac04e8c35d6ff1103487bd9a3" }
|
|
mysql_common = { git = "https://github.com/iammxt/rust_mysql_common", rev = "0e4c86952f1e799960e736c0b2bb9d2a6d935bf1" }
|
|
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-core = { git = "https://github.com/bolinfest/tokio-core", rev = "5f37aa3c627d56ee49154bc851d6930f5ab4398f" }
|
|
toml = { git = "https://github.com/jsgf/toml-rs", branch = "dotted-table-0.5.7" }
|