From be94c3acd9acbb21bb53126a0dbde732e47c7868 Mon Sep 17 00:00:00 2001 From: Debian Date: Wed, 17 Apr 2024 10:54:59 +0000 Subject: [PATCH] get_lsn_by_timestamp_handler: fix panic due to missing spans (debug-only) 2024-04-17T10:10:05.298062Z ERROR request{method=GET path=/v1/tenant/cebe21e8c0b2e7449eab58f0c196dd39/timeline/eb672319d49d517df248c7dc739a5e5b/get_lsn_by_timestamp request_id=c1fa90f5-a1b6-4395-afc3-b02d89228a4d}:get_or_maybe_download{layer=000000067F0000400200BB17590000000007-030000000000000000000000000000000002__00000064101DF219-000000641BD8F4F1}:panic{thre ad=mgmt request worker location=pageserver/src/tenant/storage_layer/layer.rs:958:9}: missing extractors: [ConstExtractor { field_name: "tenant_id" }, ConstExtractor { field_name: "shard_id" }, ConstExtractor { field_name: "timeline_id" }] Stack backtrace: 0: utils::logging::tracing_panic_hook at /home/admin/neon/libs/utils/src/logging.rs:206:21 1: core::ops::function::Fn::call at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/ops/function.rs:79:5 2: as core::ops::function::Fn>::call at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/alloc/src/boxed.rs:2029:9 3: std::panicking::rust_panic_with_hook at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:785:13 4: std::panicking::begin_panic_handler::{{closure}} at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:659:13 5: std::sys_common::backtrace::__rust_end_short_backtrace at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/sys_common/backtrace.rs:171:18 6: rust_begin_unwind at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:647:5 7: core::panicking::panic_fmt at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/panicking.rs:72:14 8: pageserver::span::debug_assert_current_span_has_tenant_and_timeline_id at /home/admin/neon/pageserver/src/span.rs:29:13 9: pageserver::tenant::storage_layer::layer::LayerInner::download_init_and_wait::{{closure}} at /home/admin/neon/pageserver/src/tenant/storage_layer/layer.rs:958:9 10: pageserver::tenant::storage_layer::layer::LayerInner::get_or_maybe_download::{{closure}}::{{closure}} at /home/admin/neon/pageserver/src/tenant/storage_layer/layer.rs:918:69 11: as core::future::future::Future>::poll at /home/admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-0.1.37/src/instrument.rs:272:9 12: pageserver::tenant::storage_layer::layer::LayerInner::get_or_maybe_download::{{closure}} at /home/admin/neon/pageserver/src/tenant/storage_layer/layer.rs:923:10 13: pageserver::tenant::storage_layer::layer::Layer::get_value_reconstruct_data::{{closure}} at /home/admin/neon/pageserver/src/tenant/storage_layer/layer.rs:291:67 14: pageserver::tenant::timeline::Timeline::get_reconstruct_data::{{closure}} at /home/admin/neon/pageserver/src/tenant/timeline.rs:2900:22 15: pageserver::tenant::timeline::Timeline::get_impl::{{closure}} at /home/admin/neon/pageserver/src/tenant/timeline.rs:736:14 16: pageserver::tenant::timeline::Timeline::get::{{closure}} at /home/admin/neon/pageserver/src/tenant/timeline.rs:681:38 17: pageserver::pgdatadir_mapping::Version::get::{{closure}} at /home/admin/neon/pageserver/src/pgdatadir_mapping.rs:1656:63 18: pageserver::pgdatadir_mapping::::list_slru_segments::{{closure}} at /home/admin/neon/pageserver/src/pgdatadir_mapping.rs:602:47 19: pageserver::pgdatadir_mapping::::map_all_timestamps::{{closure}} at /home/admin/neon/pageserver/src/pgdatadir_mapping.rs:540:14 20: pageserver::pgdatadir_mapping::::is_latest_commit_timestamp_ge_than::{{closure}} at /home/admin/neon/pageserver/src/pgdatadir_mapping.rs:503:10 21: pageserver::pgdatadir_mapping::::find_lsn_for_timestamp::{{closure}} at /home/admin/neon/pageserver/src/pgdatadir_mapping.rs:442:18 22: pageserver::http::routes::get_lsn_by_timestamp_handler::{{closure}} at /home/admin/neon/pageserver/src/http/routes.rs:724:10 23: pageserver::http::routes::api_handler::{{closure}}::{{closure}}::{{closure}}::{{closure}} at /home/admin/neon/pageserver/src/http/routes.rs:2215:48 --- pageserver/src/http/routes.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pageserver/src/http/routes.rs b/pageserver/src/http/routes.rs index 20258dd950..d40bad6be4 100644 --- a/pageserver/src/http/routes.rs +++ b/pageserver/src/http/routes.rs @@ -692,6 +692,7 @@ async fn timeline_detail_handler( json_response(StatusCode::OK, timeline_info) } +#[instrument(skip_all, fields(tenant_id, shard_id, timeline_id))] async fn get_lsn_by_timestamp_handler( request: Request, cancel: CancellationToken, @@ -714,6 +715,17 @@ async fn get_lsn_by_timestamp_handler( .map_err(ApiError::BadRequest)?; let timestamp_pg = postgres_ffi::to_pg_timestamp(timestamp); + tracing::Span::current() + .record( + "tenant_id", + tracing::field::display(&tenant_shard_id.tenant_id), + ) + .record( + "shard_id", + tracing::field::display(tenant_shard_id.shard_slug()), + ) + .record("timeline_id", tracing::field::display(&timeline_id)); + let ctx = RequestContext::new(TaskKind::MgmtRequest, DownloadBehavior::Download); let timeline =