1
0
mirror of https://github.com/apple/foundationdb.git synced 2025-05-31 01:37:54 +08:00

Merge remote-tracking branch 'sfc/bugfixes/machines-attrition-debugging' into bugfixes/machines-attrition-debugging

This commit is contained in:
Markus Pilman 2022-10-24 15:01:03 -06:00
commit 2310584a05
2 changed files with 17 additions and 3 deletions

@ -1350,7 +1350,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 {
@ -1866,7 +1867,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++;
@ -2083,7 +2084,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) ||

@ -2172,6 +2172,19 @@ void setupSimulatedSystem(std::vector<Future<Void>>* systemActors,
}
deterministicRandom()->randomShuffle(coordinatorAddresses);
for (const auto& coordinators : extraCoordinatorAddresses) {
for (int i = 0; i < (coordinators.size() / 2) + 1; i++) {
TraceEvent("ProtectCoordinator")
.detail("Address", coordinators[i])
.detail("Coordinators", describe(coordinators));
g_simulator->protectedAddresses.insert(
NetworkAddress(coordinators[i].ip, coordinators[i].port, true, coordinators[i].isTLS()));
if (coordinators[i].port == 2) {
g_simulator->protectedAddresses.insert(NetworkAddress(coordinators[i].ip, 1, true, true));
}
}
}
ASSERT_EQ(coordinatorAddresses.size(), coordinatorCount);
ClusterConnectionString conn(coordinatorAddresses, "TestCluster:0"_sr);
if (useHostname) {