[next-0.10] admin api: fix logic in get cluster status

This commit is contained in:
Alex 2024-03-27 13:55:49 +01:00
parent 4eba32f29f
commit 25c196f34d
Signed by untrusted user: lx
GPG key ID: 0E496D15096376BE

View file

@ -70,9 +70,7 @@ pub async fn handle_get_cluster_status(garage: &Arc<Garage>) -> Result<Response<
); );
} }
Some(n) => { Some(n) => {
if n.role.is_none() { n.role = Some(role);
n.role = Some(role);
}
} }
} }
} }
@ -81,15 +79,21 @@ pub async fn handle_get_cluster_status(garage: &Arc<Garage>) -> Result<Response<
for ver in layout.versions().iter().rev().skip(1) { for ver in layout.versions().iter().rev().skip(1) {
for (id, _, role) in ver.roles.items().iter() { for (id, _, role) in ver.roles.items().iter() {
if let layout::NodeRoleV(Some(r)) = role { if let layout::NodeRoleV(Some(r)) = role {
if !nodes.contains_key(id) && r.capacity.is_some() { if r.capacity.is_some() {
nodes.insert( if let Some(n) = nodes.get_mut(id) {
*id, if n.role.is_none() {
NodeResp { n.draining = true;
id: hex::encode(id), }
draining: true, } else {
..Default::default() nodes.insert(
}, *id,
); NodeResp {
id: hex::encode(id),
draining: true,
..Default::default()
},
);
}
} }
} }
} }