fixed deadlock on testnet

This commit is contained in:
ghe0 2025-03-31 14:48:15 +00:00
parent 1a1af408a8
commit 9be7abc9cf
2 changed files with 11 additions and 3 deletions

@ -13,8 +13,9 @@ server="$1"
[[ "$server" == "staging" ]] && server="registry.detee.ltd" [[ "$server" == "staging" ]] && server="registry.detee.ltd"
cargo build --release cargo build --release
ssh $server systemctl stop detee-brain-mock.service
scp target/release/brain-mock $server:/usr/local/bin/brain-mock scp target/release/brain-mock $server:/usr/local/bin/brain-mock
ssh $server mkdir -p /etc/detee/brain-mock/ ssh $server mkdir -p /etc/detee/brain-mock/
scp scripts/detee-brain-mock.service $server:/etc/systemd/system/detee-brain-mock.service scp scripts/detee-brain-mock.service $server:/etc/systemd/system/detee-brain-mock.service
ssh $server systemctl daemon-reload ssh $server systemctl daemon-reload
ssh $server systemctl restart detee-brain-mock.service ssh $server systemctl start detee-brain-mock.service

@ -437,8 +437,15 @@ impl BrainData {
log::debug!("Running contracts cron..."); log::debug!("Running contracts cron...");
{ {
let mut contracts = self.vm_contracts.write().unwrap(); let mut contracts = self.vm_contracts.write().unwrap();
let nodes = self.vm_nodes.read().unwrap();
contracts.retain_mut(|c| { 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 { if node.offline_minutes == 0 {
let operator_wallet = node.operator_wallet.clone(); let operator_wallet = node.operator_wallet.clone();
let minutes_to_collect = (Utc::now() - c.collected_at).num_minutes() as u64; 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<VmNode> { pub fn find_node_by_pubkey(&self, public_key: &str) -> Option<VmNode> {
let nodes = self.vm_nodes.read().unwrap(); 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 { pub fn is_user_banned_by_node(&self, user_wallet: &str, node_pubkey: &str) -> bool {