From 9be7abc9cf77bb12e34e32e32e8c3e4091a9e6cd Mon Sep 17 00:00:00 2001 From: ghe0 Date: Mon, 31 Mar 2025 14:48:15 +0000 Subject: [PATCH] fixed deadlock on testnet --- scripts/deploy.sh | 3 ++- src/data.rs | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 18915e0..887b79c 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -13,8 +13,9 @@ server="$1" [[ "$server" == "staging" ]] && server="registry.detee.ltd" cargo build --release +ssh $server systemctl stop detee-brain-mock.service scp target/release/brain-mock $server:/usr/local/bin/brain-mock ssh $server mkdir -p /etc/detee/brain-mock/ scp scripts/detee-brain-mock.service $server:/etc/systemd/system/detee-brain-mock.service ssh $server systemctl daemon-reload -ssh $server systemctl restart detee-brain-mock.service +ssh $server systemctl start detee-brain-mock.service diff --git a/src/data.rs b/src/data.rs index dbe6bc4..e5d52eb 100644 --- a/src/data.rs +++ b/src/data.rs @@ -437,8 +437,15 @@ impl BrainData { log::debug!("Running contracts cron..."); { let mut contracts = self.vm_contracts.write().unwrap(); + let nodes = self.vm_nodes.read().unwrap(); contracts.retain_mut(|c| { - let node = self.find_node_by_pubkey(&c.node_pubkey).unwrap(); + let node = match nodes + .iter() + .find(|n| n.public_key == 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; @@ -995,7 +1002,7 @@ impl BrainData { pub fn find_node_by_pubkey(&self, public_key: &str) -> Option { let nodes = self.vm_nodes.read().unwrap(); - nodes.iter().cloned().find(|n| n.public_key == public_key) + nodes.iter().find(|n| n.public_key == public_key).cloned() } pub fn is_user_banned_by_node(&self, user_wallet: &str, node_pubkey: &str) -> bool {