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

Encapsulate TCServerInfo::inDesiredDC

This commit is contained in:
sfc-gh-tclinkenbeard 2022-02-11 10:29:10 -08:00
parent 6ac22756a0
commit 711462dfd7
3 changed files with 14 additions and 8 deletions

@ -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;

@ -150,6 +150,12 @@ Future<Void> TCServerInfo::serverMetricsPolling() {
return TCServerInfoImpl::serverMetricsPolling(this);
}
void TCServerInfo::updateInDesiredDC(std::vector<Optional<Key>> 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());

@ -29,6 +29,7 @@ class TCMachineTeamInfo;
class TCServerInfo : public ReferenceCounted<TCServerInfo> {
friend class TCServerInfoImpl;
UID id;
bool inDesiredDC;
public:
Version addedVersion; // Read version when this Server is added
@ -47,7 +48,6 @@ public:
Future<Void> onTSSPairRemoved;
Promise<Void> killTss;
Promise<Void> wakeUpTracker;
bool inDesiredDC;
LocalityEntry localityEntry;
Promise<Void> updated;
AsyncVar<bool> wrongStoreTypeToRemove;
@ -65,6 +65,10 @@ public:
UID const& getId() const { return id; }
bool isInDesiredDC() const { return inDesiredDC; }
void updateInDesiredDC(std::vector<Optional<Key>> 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.