fix(ecstore): harden runtime read-path quorum handling (#2872)

This commit is contained in:
houseme
2026-05-08 17:56:39 +08:00
committed by GitHub
parent 03045ff2e6
commit c90bfe2b23
21 changed files with 907 additions and 139 deletions
+8
View File
@@ -97,6 +97,10 @@ pub struct Disk {
pub runtime_state: Option<String>,
#[serde(rename = "offlineDurationSeconds", default, skip_serializing_if = "Option::is_none")]
pub offline_duration_seconds: Option<u64>,
#[serde(rename = "capacityObservationSource", default, skip_serializing_if = "Option::is_none")]
pub capacity_observation_source: Option<String>,
#[serde(rename = "capacityObservationAgeSeconds", default, skip_serializing_if = "Option::is_none")]
pub capacity_observation_age_seconds: Option<u64>,
/// Leaf physical block devices backing this disk path when the platform can resolve them.
#[serde(rename = "physicalDeviceIds", default, skip_serializing_if = "Option::is_none")]
pub physical_device_ids: Option<Vec<String>>,
@@ -515,6 +519,8 @@ mod tests {
metrics: Some(DiskMetrics::default()),
runtime_state: Some("online".to_string()),
offline_duration_seconds: Some(0),
capacity_observation_source: None,
capacity_observation_age_seconds: None,
heal_info: None,
used_inodes: 1000000,
free_inodes: 9000000,
@@ -616,6 +622,8 @@ mod tests {
physical_device_ids: Some(vec!["nvme0n1".to_string(), "nvme1n1".to_string()]),
runtime_state: Some("online".to_string()),
offline_duration_seconds: Some(0),
capacity_observation_source: None,
capacity_observation_age_seconds: None,
};
let mut encoded = Vec::new();