From 5e47ff6666c92c9ca6388443019337ded17319fe Mon Sep 17 00:00:00 2001 From: Vim <121349594+sammuti@users.noreply.github.com> Date: Wed, 4 Feb 2026 03:24:05 -0700 Subject: [PATCH 1/2] [TOW-1424] Add runner-id to telemetry (#192) --- crates/tower-cmd/src/run.rs | 4 ++-- crates/tower-runtime/tests/local_test.rs | 12 ++++++------ crates/tower-runtime/tests/subprocess_test.rs | 2 +- crates/tower-telemetry/src/context.rs | 12 ++++++++---- crates/tower-telemetry/src/logging.rs | 4 ++-- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/crates/tower-cmd/src/run.rs b/crates/tower-cmd/src/run.rs index b96f2ad0..bec58f5a 100644 --- a/crates/tower-cmd/src/run.rs +++ b/crates/tower-cmd/src/run.rs @@ -247,7 +247,7 @@ fn build_cli_execution_spec( run_id: String, ) -> ExecutionSpec { let spec = ExecutionSpec { - id: run_id, + id: run_id.clone(), package_stream: Box::new(package_stream), runtime: ExecRuntimeConfig { image: "local".to_string(), @@ -278,7 +278,7 @@ fn build_cli_execution_spec( timeout_seconds: 3600, }, networking: None, - telemetry_ctx: Context::new(), + telemetry_ctx: Context::new("local-runner".to_string()).with_runid(&run_id), }; spec } diff --git a/crates/tower-runtime/tests/local_test.rs b/crates/tower-runtime/tests/local_test.rs index 02069308..2a0c741f 100644 --- a/crates/tower-runtime/tests/local_test.rs +++ b/crates/tower-runtime/tests/local_test.rs @@ -48,7 +48,7 @@ async fn test_running_hello_world_json_logs() { // We need to create the package, which will load the app let opts = StartOptions { - ctx: tower_telemetry::Context::new(), + ctx: tower_telemetry::Context::new("runner-id".to_string()), package, output_sender: sender, cwd: None, @@ -97,7 +97,7 @@ async fn test_running_hello_world() { // We need to create the package, which will load the app let opts = StartOptions { - ctx: tower_telemetry::Context::new(), + ctx: tower_telemetry::Context::new("runner-id".to_string()), package, output_sender: sender, cwd: None, @@ -142,7 +142,7 @@ async fn test_running_use_faker() { // We need to create the package, which will load the app let opts = StartOptions { - ctx: tower_telemetry::Context::new(), + ctx: tower_telemetry::Context::new("runner-id".to_string()), package, output_sender: sender, cwd: None, @@ -194,7 +194,7 @@ async fn test_running_legacy_app() { // We need to create the package, which will load the app let opts = StartOptions { - ctx: tower_telemetry::Context::new(), + ctx: tower_telemetry::Context::new("runner-id".to_string()), package, output_sender: sender, cwd: None, @@ -260,7 +260,7 @@ async fn test_running_app_with_secret() { // We need to create the package, which will load the app let opts = StartOptions { - ctx: tower_telemetry::Context::new(), + ctx: tower_telemetry::Context::new("runner-id".to_string()), package, output_sender: sender, cwd: None, @@ -339,7 +339,7 @@ async fn test_abort_on_dependency_installation_failure() { let (sender, mut receiver) = unbounded_channel(); let opts = StartOptions { - ctx: tower_telemetry::Context::new(), + ctx: tower_telemetry::Context::new("runner-id".to_string()), package, output_sender: sender, cwd: None, diff --git a/crates/tower-runtime/tests/subprocess_test.rs b/crates/tower-runtime/tests/subprocess_test.rs index 40a99929..8d7448c6 100644 --- a/crates/tower-runtime/tests/subprocess_test.rs +++ b/crates/tower-runtime/tests/subprocess_test.rs @@ -45,7 +45,7 @@ async fn create_execution_spec(id: String, package: Package) -> ExecutionSpec { ExecutionSpec { id, - telemetry_ctx: tower_telemetry::Context::new(), + telemetry_ctx: tower_telemetry::Context::new("runner-id".to_string()), package_stream: Box::new(file), environment: "test".to_string(), secrets: HashMap::new(), diff --git a/crates/tower-telemetry/src/context.rs b/crates/tower-telemetry/src/context.rs index c1ac26ce..c61329b0 100644 --- a/crates/tower-telemetry/src/context.rs +++ b/crates/tower-telemetry/src/context.rs @@ -2,16 +2,20 @@ pub struct Context { /// runid is the ID of the run in the current context. pub runid: Option, + /// runner_id is the ID of the runner instance in the current context. + pub runner_id: String, } impl Context { - pub fn from_runid(runid: &str) -> Self { + pub fn new(runner_id: String) -> Self { Self { - runid: Some(runid.to_string()), + runid: None, + runner_id, } } - pub fn new() -> Self { - Self { runid: None } + pub fn with_runid(mut self, runid: &str) -> Self { + self.runid = Some(runid.to_string()); + self } } diff --git a/crates/tower-telemetry/src/logging.rs b/crates/tower-telemetry/src/logging.rs index 7c16fd48..03e8e80e 100644 --- a/crates/tower-telemetry/src/logging.rs +++ b/crates/tower-telemetry/src/logging.rs @@ -7,9 +7,9 @@ macro_rules! event_with_level { // With context ($level:expr, ctx: $ctx:expr, $fmt:expr, $($arg:tt)+) => { if let Some(runid) = &$ctx.runid { - $crate::tracing::event!($level, "tower.runid" = %runid, "{}", format!($fmt, $($arg)+)) + $crate::tracing::event!($level, "tower.runid" = %runid, "tower.runner_id" = %$ctx.runner_id, "{}", format!($fmt, $($arg)+)) } else { - $crate::tracing::event!($level, "{}", format!($fmt, $($arg)+)) + $crate::tracing::event!($level, "tower.runner_id" = %$ctx.runner_id, "{}", format!($fmt, $($arg)+)) } }; From e8fba08d8331b5afd103f4ec8d4a4466d47d6c07 Mon Sep 17 00:00:00 2001 From: Vim <121349594+sammuti@users.noreply.github.com> Date: Wed, 4 Feb 2026 05:24:14 -0700 Subject: [PATCH 2/2] Version bump v0.3.47 (#193) * Version bump to 0.3.47 * uv --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 51a567c6..a924570d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "config" -version = "0.3.46" +version = "0.3.47" dependencies = [ "base64", "chrono", @@ -598,7 +598,7 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto" -version = "0.3.46" +version = "0.3.47" dependencies = [ "aes-gcm", "base64", @@ -3252,7 +3252,7 @@ dependencies = [ [[package]] name = "testutils" -version = "0.3.46" +version = "0.3.47" dependencies = [ "pem", "rsa", @@ -3522,7 +3522,7 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" -version = "0.3.46" +version = "0.3.47" dependencies = [ "tokio", "tower-api", @@ -3547,7 +3547,7 @@ dependencies = [ [[package]] name = "tower-api" -version = "0.3.46" +version = "0.3.47" dependencies = [ "reqwest", "serde", @@ -3559,7 +3559,7 @@ dependencies = [ [[package]] name = "tower-cmd" -version = "0.3.46" +version = "0.3.47" dependencies = [ "axum", "bytes", @@ -3629,7 +3629,7 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-package" -version = "0.3.46" +version = "0.3.47" dependencies = [ "async-compression", "config", @@ -3647,7 +3647,7 @@ dependencies = [ [[package]] name = "tower-runtime" -version = "0.3.46" +version = "0.3.47" dependencies = [ "async-trait", "chrono", @@ -3670,7 +3670,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tower-telemetry" -version = "0.3.46" +version = "0.3.47" dependencies = [ "tracing", "tracing-appender", @@ -3679,7 +3679,7 @@ dependencies = [ [[package]] name = "tower-uv" -version = "0.3.46" +version = "0.3.47" dependencies = [ "async-compression", "async_zip", @@ -3697,7 +3697,7 @@ dependencies = [ [[package]] name = "tower-version" -version = "0.3.46" +version = "0.3.47" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 41114404..c581771a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] edition = "2021" -version = "0.3.46" +version = "0.3.47" description = "Tower is the best way to host Python data apps in production" rust-version = "1.81" authors = ["Brad Heller "] diff --git a/pyproject.toml b/pyproject.toml index 6f1b2530..c66354af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "tower" -version = "0.3.46" +version = "0.3.47" description = "Tower CLI and runtime environment for Tower." authors = [{ name = "Tower Computing Inc.", email = "brad@tower.dev" }] readme = "README.md" diff --git a/uv.lock b/uv.lock index 6e2615d9..d5d4dd75 100644 --- a/uv.lock +++ b/uv.lock @@ -2744,7 +2744,7 @@ wheels = [ [[package]] name = "tower" -version = "0.3.46" +version = "0.3.47" source = { editable = "." } dependencies = [ { name = "attrs" },