diff options
author | Florian Klink <flokli@flokli.de> | 2024-06-12T21·17+0300 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-06-12T23·43+0000 |
commit | ddd88a589b3a4610627ba5620e273f4d055541f0 (patch) | |
tree | f7fe710d6a98e3dc437c1c8517eaaedb994559ae /tvix | |
parent | 842d6816bfa5a8f393719e4cb1e8bfc4d8c14174 (diff) |
feat(tvix/glue/tvix_store_io): show progress info r/8255
In `store_path_to_node`, in case we need to build or fetch something, render a progress bar, using the spinner for now. We can upgrade this to a progress *bar* later. Change-Id: I4a7cf5ef8f639076f176af9b39d276be3f37c8ff Reviewed-on: https://cl.tvl.fyi/c/depot/+/11793 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: Connor Brewster <cbrewster@hey.com> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix')
-rw-r--r-- | tvix/Cargo.lock | 2 | ||||
-rw-r--r-- | tvix/Cargo.nix | 8 | ||||
-rw-r--r-- | tvix/glue/Cargo.toml | 2 | ||||
-rw-r--r-- | tvix/glue/src/tvix_store_io.rs | 13 |
4 files changed, 20 insertions, 5 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock index d7955cbc1e89..9dd63c240c5a 100644 --- a/tvix/Cargo.lock +++ b/tvix/Cargo.lock @@ -4292,10 +4292,12 @@ dependencies = [ "tokio-tar", "tokio-util", "tracing", + "tracing-indicatif", "tvix-build", "tvix-castore", "tvix-eval", "tvix-store", + "tvix-tracing", "url", "walkdir", "wu-manber", diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index da67d34c311d..6200fe6025b9 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -13642,6 +13642,10 @@ rec { packageId = "tracing"; } { + name = "tracing-indicatif"; + packageId = "tracing-indicatif"; + } + { name = "tvix-build"; packageId = "tvix-build"; usesDefaultFeatures = false; @@ -13660,6 +13664,10 @@ rec { usesDefaultFeatures = false; } { + name = "tvix-tracing"; + packageId = "tvix-tracing"; + } + { name = "url"; packageId = "url"; } diff --git a/tvix/glue/Cargo.toml b/tvix/glue/Cargo.toml index dcc46d599096..6968210c5efb 100644 --- a/tvix/glue/Cargo.toml +++ b/tvix/glue/Cargo.toml @@ -17,7 +17,9 @@ tvix-build = { path = "../build", default-features = false, features = []} tvix-eval = { path = "../eval" } tvix-castore = { path = "../castore" } tvix-store = { path = "../store", default-features = false, features = []} +tvix-tracing = { path = "../tracing" } tracing = "0.1.37" +tracing-indicatif = "0.3.6" tokio = "1.28.0" tokio-tar = "0.3.1" tokio-util = { version = "0.7.9", features = ["io", "io-util", "compat"] } diff --git a/tvix/glue/src/tvix_store_io.rs b/tvix/glue/src/tvix_store_io.rs index 697b5a1dde8a..b59d0616cf2c 100644 --- a/tvix/glue/src/tvix_store_io.rs +++ b/tvix/glue/src/tvix_store_io.rs @@ -13,7 +13,8 @@ use std::{ sync::Arc, }; use tokio_util::io::SyncIoBridge; -use tracing::{error, info, instrument, warn, Level}; +use tracing::{error, instrument, warn, Level, Span}; +use tracing_indicatif::span_ext::IndicatifSpanExt; use tvix_build::buildservice::BuildService; use tvix_castore::proto::node::Node; use tvix_eval::{EvalIO, FileType, StdIO}; @@ -105,7 +106,7 @@ impl TvixStoreIO { /// /// In case there is no PathInfo yet, this means we need to build it /// (which currently is stubbed out still). - #[instrument(skip(self, store_path), fields(store_path=%store_path), ret(level = Level::TRACE), err)] + #[instrument(skip(self, store_path), fields(store_path=%store_path, indicatif.pb_show=1), ret(level = Level::TRACE), err)] async fn store_path_to_node( &self, store_path: &StorePath, @@ -134,6 +135,9 @@ impl TvixStoreIO { // it for things like <nixpkgs> pointing to a store path. // In the future, these things will (need to) have PathInfo. None => { + let span = Span::current(); + span.pb_start(); + span.pb_set_style(&tvix_tracing::PB_SPINNER_STYLE); // The store path doesn't exist yet, so we need to fetch or build it. // We check for fetches first, as we might have both native // fetchers and FODs in KnownPaths, and prefer the former. @@ -146,7 +150,7 @@ impl TvixStoreIO { match maybe_fetch { Some((name, fetch)) => { - info!(?fetch, "triggering lazy fetch"); + span.pb_set_message(&format!("⏳Fetching {}", &store_path)); let (sp, root_node) = self .fetcher .ingest_and_persist(&name, fetch) @@ -179,8 +183,7 @@ impl TvixStoreIO { } } }; - - warn!("triggering build"); + span.pb_set_message(&format!("🔨building {}", &store_path)); // derivation_to_build_request needs castore nodes for all inputs. // Provide them, which means, here is where we recursively build |