hank9999 commited on
Commit ·
806ae12
1
Parent(s): eec4f69
fix: 修复 `所有凭据均已禁用` 后的死锁问题
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
};
|