diff --git a/fdbserver/DDTeamCollection.actor.cpp b/fdbserver/DDTeamCollection.actor.cpp index cbfbfb9da3..e8b8c49347 100644 --- a/fdbserver/DDTeamCollection.actor.cpp +++ b/fdbserver/DDTeamCollection.actor.cpp @@ -355,7 +355,7 @@ public: for (; idx < self->badTeams.size(); idx++) { servers.clear(); for (const auto& server : self->badTeams[idx]->getServers()) { - if (server->inDesiredDC && !self->server_status.get(server->getId()).isUnhealthy()) { + if (server->isInDesiredDC() && !self->server_status.get(server->getId()).isUnhealthy()) { servers.push_back(server); } } @@ -1259,11 +1259,7 @@ public: } } - server->inDesiredDC = - (self->includedDCs.empty() || - std::find(self->includedDCs.begin(), - self->includedDCs.end(), - server->lastKnownInterface.locality.dcId()) != self->includedDCs.end()); + server->updateInDesiredDC(self->includedDCs); self->resetLocalitySet(); bool addedNewBadTeam = false; @@ -3249,7 +3245,7 @@ void DDTeamCollection::traceServerInfo() const { .detail("ServerTeamOwned", server.second->teams.size()) .detail("MachineID", server.second->machine->machineID.contents().toString()) .detail("StoreType", server.second->storeType.toString()) - .detail("InDesiredDC", server.second->inDesiredDC); + .detail("InDesiredDC", server.second->isInDesiredDC()); } for (auto& server : server_info) { const UID& uid = server.first; diff --git a/fdbserver/TCInfo.actor.cpp b/fdbserver/TCInfo.actor.cpp index a430b0d5f7..8cb3221366 100644 --- a/fdbserver/TCInfo.actor.cpp +++ b/fdbserver/TCInfo.actor.cpp @@ -150,6 +150,12 @@ Future TCServerInfo::serverMetricsPolling() { return TCServerInfoImpl::serverMetricsPolling(this); } +void TCServerInfo::updateInDesiredDC(std::vector> const& includedDCs) { + inDesiredDC = + (includedDCs.empty() || + std::find(includedDCs.begin(), includedDCs.end(), lastKnownInterface.locality.dcId()) != includedDCs.end()); +} + TCServerInfo::~TCServerInfo() { if (collection && ssVersionTooFarBehind.get() && !lastKnownInterface.isTss()) { collection->removeLaggingStorageServer(lastKnownInterface.locality.zoneId().get()); diff --git a/fdbserver/TCInfo.h b/fdbserver/TCInfo.h index b64e415204..09ea29736f 100644 --- a/fdbserver/TCInfo.h +++ b/fdbserver/TCInfo.h @@ -29,6 +29,7 @@ class TCMachineTeamInfo; class TCServerInfo : public ReferenceCounted { friend class TCServerInfoImpl; UID id; + bool inDesiredDC; public: Version addedVersion; // Read version when this Server is added @@ -47,7 +48,6 @@ public: Future onTSSPairRemoved; Promise killTss; Promise wakeUpTracker; - bool inDesiredDC; LocalityEntry localityEntry; Promise updated; AsyncVar wrongStoreTypeToRemove; @@ -65,6 +65,10 @@ public: UID const& getId() const { return id; } + bool isInDesiredDC() const { return inDesiredDC; } + + void updateInDesiredDC(std::vector> const& includedDCs); + bool isCorrectStoreType(KeyValueStoreType configStoreType) const { // A new storage server's store type may not be set immediately. // If a storage server does not reply its storeType, it will be tracked by failure monitor and removed.