Skip to content

Commit 4fb759e

Browse files
committed
refactor: serialize an empty instance in if METRICS is empty
- change affects balloon, rng and mem devices Signed-off-by: aerosouund <aerosound161@gmail.com>
1 parent 20b9697 commit 4fb759e

3 files changed

Lines changed: 16 additions & 9 deletions

File tree

src/vmm/src/devices/virtio/balloon/metrics.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ pub(super) static METRICS: OnceLock<Arc<BalloonDeviceMetrics>> = OnceLock::new()
4545
/// Called by METRICS.flush(), this function facilitates serialization of balloon device metrics.
4646
pub fn flush_metrics<S: Serializer>(serializer: S) -> Result<S::Ok, S::Error> {
4747
let mut seq = serializer.serialize_map(Some(1))?;
48-
if let Some(metrics) = METRICS.get() {
49-
seq.serialize_entry("balloon", &metrics)?;
50-
};
48+
let dev_name = "balloon";
49+
match METRICS.get() {
50+
Some(metrics) => seq.serialize_entry(dev_name, &metrics)?,
51+
None => seq.serialize_entry(dev_name, &BalloonDeviceMetrics::default())?,
52+
}
5153
seq.end()
5254
}
5355

src/vmm/src/devices/virtio/mem/metrics.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ pub(super) static METRICS: OnceLock<Arc<VirtioMemDeviceMetrics>> = OnceLock::new
3535
pub fn flush_metrics<S: Serializer>(serializer: S) -> Result<S::Ok, S::Error> {
3636
// why are even doing different handling ? what is seq and why is it important ?
3737
let mut seq = serializer.serialize_map(Some(1))?;
38-
if let Some(metrics) = METRICS.get() {
39-
seq.serialize_entry("memory_hotplug", &metrics)?;
40-
};
38+
let dev_name = "memory_hotplug";
39+
match METRICS.get() {
40+
Some(metrics) => seq.serialize_entry(dev_name, &metrics)?,
41+
None => seq.serialize_entry(dev_name, &VirtioMemDeviceMetrics::default())?,
42+
}
4143
seq.end()
4244
}
4345

src/vmm/src/devices/virtio/rng/metrics.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,12 @@ use std::sync::{Arc, OnceLock};
4444
/// This function facilitates aggregation and serialization of rng metrics.
4545
pub fn flush_metrics<S: Serializer>(serializer: S) -> Result<S::Ok, S::Error> {
4646
let mut seq = serializer.serialize_map(Some(1))?;
47-
if let Some(metrics) = METRICS.get() {
48-
seq.serialize_entry("rng", &metrics)?
49-
};
47+
let dev_name = "entropy";
48+
match METRICS.get() {
49+
Some(metrics) => seq.serialize_entry(dev_name, &metrics)?,
50+
None => seq.serialize_entry(dev_name, &EntropyDeviceMetrics::default())?,
51+
}
52+
5053
seq.end()
5154
}
5255

0 commit comments

Comments
 (0)