chore(rust/gui-client): log the IPC message variant if the service can't handle it (#6571)

This would have helped while debugging a customer issue

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
This commit is contained in:
Reactor Scram
2024-09-03 14:38:57 -05:00
committed by GitHub
parent 98847557f4
commit 09f4b6e790
3 changed files with 15 additions and 0 deletions

10
rust/Cargo.lock generated
View File

@@ -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"

View File

@@ -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. <https://github.com/firezone/firezone/pull/4328#discussion_r1540342142>

View File

@@ -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;