diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 41d0440aa..c747430dd 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1952,6 +1952,7 @@ dependencies = [ "secrecy", "serde", "serde_json", + "serde_variant", "tempfile", "thiserror", "tokio", @@ -5384,6 +5385,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_variant" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0068df419f9d9b6488fdded3f1c818522cdea328e02ce9d9f147380265a432" +dependencies = [ + "serde", +] + [[package]] name = "serde_with" version = "3.7.0" diff --git a/rust/headless-client/Cargo.toml b/rust/headless-client/Cargo.toml index f8c4ace3a..49a673fa7 100644 --- a/rust/headless-client/Cargo.toml +++ b/rust/headless-client/Cargo.toml @@ -23,6 +23,7 @@ rustls = { workspace = true } secrecy = { workspace = true } serde = { version = "1.0.209", features = ["derive"] } serde_json = "1.0.125" +serde_variant = "0.1.3" thiserror = { version = "1.0", default-features = false } # This actually relies on many other features in Tokio, so this will probably # fail to build outside the workspace. diff --git a/rust/headless-client/src/ipc_service.rs b/rust/headless-client/src/ipc_service.rs index ec9f03a1c..a1d033963 100644 --- a/rust/headless-client/src/ipc_service.rs +++ b/rust/headless-client/src/ipc_service.rs @@ -311,6 +311,10 @@ impl<'a> Handler<'a> { break HandlerOk::Err; } Event::Ipc(msg) => { + let msg_variant = serde_variant::to_variant_name(&msg) + .expect("IPC messages should be enums, not structs or anything else."); + let _entered = + tracing::error_span!("handle_ipc_msg", msg = %msg_variant).entered(); if let Err(error) = self.handle_ipc_msg(msg).await { tracing::error!(?error, "Error while handling IPC message from client"); continue;