server: add request_id to all graphql logging

This commit is contained in:
Bill Thiede 2025-01-12 11:40:31 -08:00
parent e07c0616a2
commit de23bae8bd

View File

@ -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<usize, Error> {
let nm = ctx.data_unchecked::<Notmuch>();
let pool = ctx.data_unchecked::<PgPool>();
@ -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<Vec<Tag>> {
let nm = ctx.data_unchecked::<Notmuch>();
let pool = ctx.data_unchecked::<PgPool>();
@ -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<Thread, Error> {
let nm = ctx.data_unchecked::<Notmuch>();
let pool = ctx.data_unchecked::<PgPool>();
@ -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<bool, Error> {
let nm = ctx.data_unchecked::<Notmuch>();
info!("{}", String::from_utf8_lossy(&nm.new()?));