From de23bae8bd2721bac0882e2582b95944300431a1 Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Sun, 12 Jan 2025 11:40:31 -0800 Subject: [PATCH] server: add request_id to all graphql logging --- server/src/graphql.rs | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/server/src/graphql.rs b/server/src/graphql.rs index 10dd394..f518c85 100644 --- a/server/src/graphql.rs +++ b/server/src/graphql.rs @@ -267,6 +267,15 @@ struct SearchCursor { tantivy_offset: i32, } +fn request_id() -> String { + let now = std::time::SystemTime::now(); + let nanos = now + .duration_since(std::time::SystemTime::UNIX_EPOCH) + .unwrap_or_default() + .as_nanos(); + format!("{nanos:x}") +} + pub struct QueryRoot; #[Object] impl QueryRoot { @@ -275,6 +284,7 @@ impl QueryRoot { Ok(shared::build_version(bi)) } #[instrument(skip_all, fields(query=query))] + #[instrument(skip_all, fields(query=query, request_id=request_id()))] async fn count<'ctx>(&self, ctx: &Context<'ctx>, query: String) -> Result { let nm = ctx.data_unchecked::(); let pool = ctx.data_unchecked::(); @@ -297,7 +307,7 @@ impl QueryRoot { // TODO: this function doesn't get parallelism, possibly because notmuch is sync and blocks, // rewrite that with tokio::process:Command - #[instrument(skip_all, fields(query=query))] + #[instrument(skip_all, fields(query=query, request_id=request_id()))] async fn search<'ctx>( &self, ctx: &Context<'ctx>, @@ -448,7 +458,7 @@ impl QueryRoot { .await?) } - #[instrument(skip_all)] + #[instrument(skip_all, fields(request_id=request_id()))] async fn tags<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult> { let nm = ctx.data_unchecked::(); let pool = ctx.data_unchecked::(); @@ -457,7 +467,7 @@ impl QueryRoot { tags.append(&mut nm::tags(nm, needs_unread)?); Ok(tags) } - #[instrument(skip_all, fields(thread_id=thread_id))] + #[instrument(skip_all, fields(thread_id=thread_id, request_id=request_id()))] async fn thread<'ctx>(&self, ctx: &Context<'ctx>, thread_id: String) -> Result { let nm = ctx.data_unchecked::(); let pool = ctx.data_unchecked::(); @@ -534,7 +544,7 @@ async fn tantivy_search( pub struct Mutation; #[Object] impl Mutation { - #[instrument(skip_all, fields(query=query, unread=unread))] + #[instrument(skip_all, fields(query=query, unread=unread, request_id=request_id()))] async fn set_read_status<'ctx>( &self, ctx: &Context<'ctx>, @@ -553,7 +563,7 @@ impl Mutation { nm::set_read_status(nm, &query, unread).await?; Ok(true) } - #[instrument(skip_all, fields(query=query, tag=tag))] + #[instrument(skip_all, fields(query=query, tag=tag, request_id=request_id()))] async fn tag_add<'ctx>( &self, ctx: &Context<'ctx>, @@ -565,7 +575,7 @@ impl Mutation { nm.tag_add(&tag, &query)?; Ok(true) } - #[instrument(skip_all, fields(query=query, tag=tag))] + #[instrument(skip_all, fields(query=query, tag=tag, request_id=request_id()))] async fn tag_remove<'ctx>( &self, ctx: &Context<'ctx>, @@ -588,7 +598,7 @@ impl Mutation { Ok(true) } - #[instrument(skip_all)] + #[instrument(skip_all, fields(request_id=request_id()))] async fn refresh<'ctx>(&self, ctx: &Context<'ctx>) -> Result { let nm = ctx.data_unchecked::(); info!("{}", String::from_utf8_lossy(&nm.new()?));