Skip to content

Instantly share code, notes, and snippets.

@kemurphy
Last active August 15, 2021 02:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kemurphy/8c5f8580f2955a482da807bfda4083a6 to your computer and use it in GitHub Desktop.
Save kemurphy/8c5f8580f2955a482da807bfda4083a6 to your computer and use it in GitHub Desktop.
diff --git a/cmd/zfs_object_agent/zettaobject/src/heartbeat.rs b/cmd/zfs_object_agent/zettaobject/src/heartbeat.rs
index a093d27ee..239f2efb5 100644
--- a/cmd/zfs_object_agent/zettaobject/src/heartbeat.rs
+++ b/cmd/zfs_object_agent/zettaobject/src/heartbeat.rs
@@ -149,21 +149,10 @@ pub async fn start_heartbeat(object_access: ObjectAccess, id: Uuid) -> Heartbeat
loop {
interval.tick().await;
{
- let fut_opt = {
- let mut heartbeats = HEARTBEAT.lock().unwrap();
- // We can almost use or_else here, but that doesn't let us change types.
- match heartbeats.get(&key).unwrap().upgrade() {
- None => {
- heartbeats.remove(&key);
- info!("Stopping heartbeat with id {}", id);
- Some(HeartbeatPhys::delete(&object_access, id))
- }
- Some(_) => None,
- }
- };
- if let Some(fut) = fut_opt {
- fut.await;
- return;
+ let mut heartbeats = HEARTBEAT.lock().unwrap();
+ if let None = heartbeats.get(&key).unwrap().upgrade() {
+ heartbeats.remove(&key);
+ break;
}
}
let heartbeat = HeartbeatPhys {
@@ -185,6 +174,9 @@ pub async fn start_heartbeat(object_access: ObjectAccess, id: Uuid) -> Heartbeat
last_heartbeat = Some(heartbeat);
}
}
+
+ info!("Stopping heartbeat with id {}", id);
+ HeartbeatPhys::delete(&object_access, id).await;
});
let result = rx.changed().await;
assert!(result.is_err() || *rx.borrow());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment