hank9999 commited on
Commit
806ae12
·
1 Parent(s): eec4f69

fix: 修复 `所有凭据均已禁用` 后的死锁问题

Browse files
Files changed (1) hide show
  1. src/kiro/token_manager.rs +5 -1
src/kiro/token_manager.rs CHANGED
@@ -599,7 +599,11 @@ impl MultiTokenManager {
599
  *current_id = new_id;
600
  (new_id, new_creds)
601
  } else {
602
- anyhow::bail!("所有凭据均已禁用({}/{})", self.available_count(), total);
 
 
 
 
603
  }
604
  }
605
  };
 
599
  *current_id = new_id;
600
  (new_id, new_creds)
601
  } else {
602
+ // 注意:必须在 bail! 之前计算 available_count,
603
+ // 因为 available_count() 会尝试获取 entries 锁,
604
+ // 而此时我们已经持有该锁,会导致死锁
605
+ let available = entries.iter().filter(|e| !e.disabled).count();
606
+ anyhow::bail!("所有凭据均已禁用({}/{})", available, total);
607
  }
608
  }
609
  };