mirror of
https://github.com/apple/foundationdb.git
synced 2025-06-02 19:25:52 +08:00
Avoid passing processes from multiple clusters to canKillProcesses
Previously, `canKillProcesses` was being called with processes from both the main and DR clusters. This would cause it to incorrectly allow permanent killing of machines, as it was acting on bad data.
This commit is contained in:
parent
c1e5dd662c
commit
165f4266b8
@ -1337,7 +1337,8 @@ public:
|
||||
bool isAvailable() const override {
|
||||
std::vector<ProcessInfo*> processesLeft, processesDead;
|
||||
for (auto processInfo : getAllProcesses()) {
|
||||
if (processInfo->isAvailableClass()) {
|
||||
if (processInfo->isAvailableClass() &&
|
||||
!processInfo->drProcess) { // Only checks availability of main cluster
|
||||
if (processInfo->isExcluded() || processInfo->isCleared() || !processInfo->isAvailable()) {
|
||||
processesDead.push_back(processInfo);
|
||||
} else {
|
||||
@ -1853,7 +1854,7 @@ public:
|
||||
int protectedWorker = 0, unavailable = 0, excluded = 0, cleared = 0;
|
||||
|
||||
for (auto processInfo : getAllProcesses()) {
|
||||
if (processInfo->isAvailableClass()) {
|
||||
if (processInfo->isAvailableClass() && processInfo->drProcess != isMainCluster) {
|
||||
if (processInfo->isExcluded()) {
|
||||
processesDead.push_back(processInfo);
|
||||
excluded++;
|
||||
@ -2070,7 +2071,7 @@ public:
|
||||
(kt == RebootAndDelete) || (kt == RebootProcessAndDelete))) {
|
||||
std::vector<ProcessInfo*> processesLeft, processesDead;
|
||||
for (auto processInfo : getAllProcesses()) {
|
||||
if (processInfo->isAvailableClass()) {
|
||||
if (processInfo->isAvailableClass() && !processInfo->drProcess) { // TODO: Reboot DR processes as well
|
||||
if (processInfo->isExcluded() || processInfo->isCleared() || !processInfo->isAvailable()) {
|
||||
processesDead.push_back(processInfo);
|
||||
} else if (protectedAddresses.count(processInfo->address) ||
|
||||
|
Loading…
x
Reference in New Issue
Block a user