From d9bf3f06f170ef0b138252ebcbd1a71c7c91ace6 Mon Sep 17 00:00:00 2001 From: Piotr Mlocek Date: Fri, 31 Jul 2026 18:40:04 -0700 Subject: [PATCH 1/3] test(server): stabilize reconcile span assertion Signed-off-by: Piotr Mlocek --- crates/openshell-server/src/compute/mod.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/openshell-server/src/compute/mod.rs b/crates/openshell-server/src/compute/mod.rs index 25a2655a7..10fba8c8c 100644 --- a/crates/openshell-server/src/compute/mod.rs +++ b/crates/openshell-server/src/compute/mod.rs @@ -6193,9 +6193,14 @@ mod tests { .await .unwrap(); - // Other tests drive their own reconcile loops into the shared - // exporter, so match on the shape of a sweep rather than assuming - // there is exactly one. + tokio::time::timeout(Duration::from_secs(5), async { + while traced.spans_named("reconcile.sandboxes").is_empty() { + tokio::time::sleep(Duration::from_millis(10)).await; + } + }) + .await + .expect("the sweep records a span of its own"); + let spans = traced.finished_spans(); let roots = traced.spans_named("reconcile.sandboxes"); assert!( From b6da238664f343f2eef0d61f16679db168ec7a29 Mon Sep 17 00:00:00 2001 From: Piotr Mlocek Date: Fri, 31 Jul 2026 18:46:41 -0700 Subject: [PATCH 2/3] test(server): stabilize async root span assertions Signed-off-by: Piotr Mlocek --- crates/openshell-server/src/compute/mod.rs | 11 +++++++++++ crates/openshell-server/src/provider_refresh.rs | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/crates/openshell-server/src/compute/mod.rs b/crates/openshell-server/src/compute/mod.rs index 10fba8c8c..e0b1f9f2b 100644 --- a/crates/openshell-server/src/compute/mod.rs +++ b/crates/openshell-server/src/compute/mod.rs @@ -6148,6 +6148,17 @@ mod tests { .await .unwrap(); + tokio::time::timeout(Duration::from_secs(5), async { + while traced + .spans_named("driver_watch.sandbox_deleted") + .is_empty() + { + tokio::time::sleep(Duration::from_millis(10)).await; + } + }) + .await + .expect("the event records a span of its own"); + let spans = traced.finished_spans(); let root = spans .iter() diff --git a/crates/openshell-server/src/provider_refresh.rs b/crates/openshell-server/src/provider_refresh.rs index a03fdb0b1..2d97aab41 100644 --- a/crates/openshell-server/src/provider_refresh.rs +++ b/crates/openshell-server/src/provider_refresh.rs @@ -1534,6 +1534,17 @@ mod tests { let traced = test_exporter::install_traced(); run_refresh_worker_tick(&store).await.unwrap(); + tokio::time::timeout(std::time::Duration::from_secs(5), async { + while traced + .spans_named("refresh.provider_credentials") + .is_empty() + { + tokio::time::sleep(std::time::Duration::from_millis(10)).await; + } + }) + .await + .expect("the tick records a span of its own"); + let spans = traced.finished_spans(); let root = spans .iter() From 167228c6599dcbe6a5a62c82a0e169011e9b4b38 Mon Sep 17 00:00:00 2001 From: Piotr Mlocek Date: Fri, 31 Jul 2026 22:04:41 -0700 Subject: [PATCH 3/3] fix(server): release refresh span handle Signed-off-by: Piotr Mlocek --- crates/openshell-server/src/provider_refresh.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/openshell-server/src/provider_refresh.rs b/crates/openshell-server/src/provider_refresh.rs index 2d97aab41..ff9bbac6a 100644 --- a/crates/openshell-server/src/provider_refresh.rs +++ b/crates/openshell-server/src/provider_refresh.rs @@ -1026,6 +1026,7 @@ async fn run_refresh_worker_tick(store: &Store) -> Result<(), Status> { let span = tracing::Span::current(); span.record("watched_count", watched_count); span.record("due_count", due_count); + drop(span); info!( watched_count, due_count, rotation_requested_count, "provider credential refresh worker sweep"