mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
edenapi: add tracing spans
Summary: Add tracing spans so we can get some insights about statistics from the pure Rust land. Reviewed By: xavierd Differential Revision: D18625646 fbshipit-source-id: 15951fe2f8270a70f647a0f4e09819bbc33919c5
This commit is contained in:
parent
a47b831d54
commit
5b61ae4c89
@ -5,22 +5,23 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
auth = { path = "../auth" }
|
||||
blackbox = { path = "../blackbox" }
|
||||
bytes = "0.4.11"
|
||||
configparser = { path = "../configparser" }
|
||||
curl = { version = "0.4.20", features = ["http2"] }
|
||||
failure = "0.1.3"
|
||||
http = "0.1.17"
|
||||
itertools = "0.8.0"
|
||||
lazy_static = "1.2"
|
||||
log = "0.4.6"
|
||||
parking_lot = "0.9"
|
||||
regex = "1.0"
|
||||
serde = "1.0.89"
|
||||
serde_cbor = "0.9.0"
|
||||
thiserror = "1.0.5"
|
||||
tracing = "0"
|
||||
types = { path = "../types" }
|
||||
url = "2.1.0"
|
||||
blackbox = { path = "../blackbox" }
|
||||
regex = "1.0"
|
||||
lazy_static = "1.2"
|
||||
thiserror = "1.0.5"
|
||||
|
||||
[dev-dependencies]
|
||||
tempdir = "0.3.7"
|
||||
|
@ -166,7 +166,8 @@ impl EdenApi for EdenApiCurlClient {
|
||||
keys: Vec<Key>,
|
||||
progress: Option<ProgressFn>,
|
||||
) -> ApiResult<(Box<dyn Iterator<Item = (Key, Bytes)>>, DownloadStats)> {
|
||||
self.get_data(paths::DATA, keys, progress)
|
||||
tracing::info_span!("api::get_files", count = keys.len())
|
||||
.in_scope(|| self.get_data(paths::DATA, keys, progress))
|
||||
}
|
||||
|
||||
fn get_history(
|
||||
@ -175,6 +176,13 @@ impl EdenApi for EdenApiCurlClient {
|
||||
max_depth: Option<u32>,
|
||||
progress: Option<ProgressFn>,
|
||||
) -> ApiResult<(Box<dyn Iterator<Item = HistoryEntry>>, DownloadStats)> {
|
||||
let span = tracing::info_span!(
|
||||
"api::get_history",
|
||||
count = keys.len(),
|
||||
max_depth = max_depth.unwrap_or(1)
|
||||
);
|
||||
let _guard = span.enter();
|
||||
|
||||
log::debug!("Fetching {} files", keys.len());
|
||||
|
||||
let mut url = self.repo_base_url()?.join(paths::HISTORY)?;
|
||||
@ -247,7 +255,8 @@ impl EdenApi for EdenApiCurlClient {
|
||||
keys: Vec<Key>,
|
||||
progress: Option<ProgressFn>,
|
||||
) -> ApiResult<(Box<dyn Iterator<Item = (Key, Bytes)>>, DownloadStats)> {
|
||||
self.get_data(paths::TREES, keys, progress)
|
||||
tracing::info_span!("api::get_trees", count = keys.len())
|
||||
.in_scope(|| self.get_data(paths::TREES, keys, progress))
|
||||
}
|
||||
|
||||
fn prefetch_trees(
|
||||
@ -258,6 +267,8 @@ impl EdenApi for EdenApiCurlClient {
|
||||
depth: Option<usize>,
|
||||
progress: Option<ProgressFn>,
|
||||
) -> ApiResult<(Box<dyn Iterator<Item = (Key, Bytes)>>, DownloadStats)> {
|
||||
let span = tracing::info_span!("api::prefetch_trees");
|
||||
let _guard = span.enter();
|
||||
let mut url = self.repo_base_url()?.join(paths::PREFETCH_TREES)?;
|
||||
if self.stream_trees {
|
||||
url.set_query(Some("stream=true"));
|
||||
@ -431,6 +442,16 @@ where
|
||||
progress.set_callback(progress_cb);
|
||||
driver.set_progress_reporter(progress);
|
||||
|
||||
let span = tracing::debug_span!(
|
||||
"curl::multi_request",
|
||||
url = &AsRef::<str>::as_ref(&url.to_string()),
|
||||
downloaded = "",
|
||||
uplaoded = "",
|
||||
requests = num_requests,
|
||||
latency = "",
|
||||
);
|
||||
let _guard = span.enter();
|
||||
|
||||
log::debug!("Performing {} requests", num_requests);
|
||||
let start = Instant::now();
|
||||
|
||||
@ -468,6 +489,12 @@ where
|
||||
|
||||
log::info!("{}", &dlstats);
|
||||
|
||||
if !span.is_disabled() {
|
||||
span.record("downloaded", &dlstats.downloaded);
|
||||
span.record("uploaded", &dlstats.uploaded);
|
||||
span.record("latency_ms", &(dlstats.latency.as_millis() as u64));
|
||||
}
|
||||
|
||||
Ok(dlstats)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user