From c5f7c6bd5a0fdb8dcfa0577bae9b3dae731bb7a7 Mon Sep 17 00:00:00 2001 From: John Spray Date: Tue, 7 Nov 2023 11:56:54 +0000 Subject: [PATCH] pageserver: add debug_assert_current_span_has_tenant_id --- pageserver/src/tenant.rs | 4 +++- pageserver/src/tenant/timeline/span.rs | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pageserver/src/tenant.rs b/pageserver/src/tenant.rs index 4f00a291da..281cd55322 100644 --- a/pageserver/src/tenant.rs +++ b/pageserver/src/tenant.rs @@ -141,7 +141,9 @@ pub(crate) mod timeline; pub mod size; -pub(crate) use timeline::span::debug_assert_current_span_has_tenant_and_timeline_id; +pub(crate) use timeline::span::{ + debug_assert_current_span_has_tenant_and_timeline_id, debug_assert_current_span_has_tenant_id, +}; pub(crate) use timeline::{LogicalSizeCalculationCause, PageReconstructError, Timeline}; // re-export for use in remote_timeline_client.rs diff --git a/pageserver/src/tenant/timeline/span.rs b/pageserver/src/tenant/timeline/span.rs index 3b580c9d1b..45b7e9dc8d 100644 --- a/pageserver/src/tenant/timeline/span.rs +++ b/pageserver/src/tenant/timeline/span.rs @@ -18,3 +18,15 @@ pub(crate) fn debug_assert_current_span_has_tenant_and_timeline_id() { panic!("missing extractors: {missing:?}") } } + +#[cfg(not(debug_assertions))] +pub(crate) fn debug_assert_current_span_has_tenant_id() {} + +#[cfg(debug_assertions)] +#[track_caller] +pub(crate) fn debug_assert_current_span_has_tenant_id() { + let fields: [&dyn Extractor; 1] = [&*crate::tenant::span::TENANT_ID_EXTRACTOR]; + if let Err(missing) = check_fields_present!(fields) { + panic!("missing extractors: {missing:?}") + } +}