From 9f22c8fb14c3e9d4f89f57a2f28220a8882ac9c6 Mon Sep 17 00:00:00 2001 From: Noor Date: Wed, 16 Apr 2025 00:21:40 +0000 Subject: [PATCH] fix: app node cron fix validating app node online status on cron fix deadlock on app contract cron --- src/data.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/data.rs b/src/data.rs index b5187b2..f9cc175 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1452,7 +1452,7 @@ impl BrainData { let mut nodes = self.app_nodes.write().unwrap(); let mut app_contracts = self.app_contracts.write().unwrap(); for node in nodes.iter_mut() { - if self.daemon_tx.contains_key(&node.node_pubkey) { + if self.app_daemon_tx.contains_key(&node.node_pubkey) { node.offline_minutes = 0; continue; } @@ -1501,8 +1501,17 @@ impl BrainData { log::debug!("Running app contracts cron..."); { let mut app_contracts = self.app_contracts.write().unwrap(); + let app_nodes = self.app_nodes.read().unwrap(); app_contracts.retain_mut(|c| { - let node = self.find_app_node_by_pubkey(&c.node_pubkey).unwrap(); + let node = match app_nodes + .iter() + .find(|n| n.node_pubkey == c.node_pubkey) + .cloned() + { + Some(n) => n, + None => return c.locked_nano > 0, + }; + if node.offline_minutes == 0 { let operator_wallet = node.operator_wallet.clone(); let minutes_to_collect = (Utc::now() - c.collected_at).num_minutes() as u64;