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:
parent
6ac22756a0
commit
711462dfd7
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user