Make getServerMetrics private to TCServerInfo class and rename some methods to remove redundant reference to 'server'

This commit is contained in:
Bharadwaj V.R 2022-03-02 15:14:29 -08:00 committed by Trevor Clinkenbeard
parent 7bad6c5093
commit 8be519a5d8
3 changed files with 45 additions and 44 deletions

View File

@ -5316,10 +5316,10 @@ public:
collection->disableBuildingTeams();
collection->setCheckTeamDelay();
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
/*
* Suppose 1, 2 and 3 are complete sources, i.e., they have all shards in
@ -5372,10 +5372,10 @@ public:
collection->disableBuildingTeams();
collection->setCheckTeamDelay();
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
/*
@ -5435,10 +5435,10 @@ public:
* least utilized, if the caller says they preferLowerUtilization.
*/
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
bool wantsNewServers = true;
bool wantsTrueBest = true;
@ -5485,10 +5485,10 @@ public:
collection->disableBuildingTeams();
collection->setCheckTeamDelay();
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
/*
* Among server teams that have healthy space available, pick the team that is
@ -5539,10 +5539,10 @@ public:
collection->disableBuildingTeams();
collection->setCheckTeamDelay();
collection->server_info[UID(1, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(2, 0)]->setServerMetrics(low_avail);
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(4, 0)]->setServerMetrics(low_avail);
collection->server_info[UID(1, 0)]->setMetrics(high_avail);
collection->server_info[UID(2, 0)]->setMetrics(low_avail);
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
collection->server_info[UID(4, 0)]->setMetrics(low_avail);
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
/*
@ -5599,11 +5599,11 @@ public:
collection->disableBuildingTeams();
collection->setCheckTeamDelay();
collection->server_info[UID(1, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(2, 0)]->setServerMetrics(low_avail);
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(4, 0)]->setServerMetrics(low_avail);
collection->server_info[UID(5, 0)]->setServerMetrics(high_avail);
collection->server_info[UID(1, 0)]->setMetrics(high_avail);
collection->server_info[UID(2, 0)]->setMetrics(low_avail);
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
collection->server_info[UID(4, 0)]->setMetrics(low_avail);
collection->server_info[UID(5, 0)]->setMetrics(high_avail);
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
/*

View File

@ -37,7 +37,7 @@ public:
choose {
when(ErrorOr<GetStorageMetricsReply> rep = wait(metricsRequest)) {
if (rep.present()) {
server->serverMetrics = rep;
server->metrics = rep;
if (server->updated.canBeSet()) {
server->updated.send(Void());
}
@ -65,27 +65,27 @@ public:
}
}
if (server->serverMetrics.get().lastUpdate < now() - SERVER_KNOBS->DD_SS_STUCK_TIME_LIMIT) {
if (server->metrics.get().lastUpdate < now() - SERVER_KNOBS->DD_SS_STUCK_TIME_LIMIT) {
if (server->ssVersionTooFarBehind.get() == false) {
TraceEvent("StorageServerStuck", server->collection->getDistributorId())
.detail("ServerId", server->id.toString())
.detail("LastUpdate", server->serverMetrics.get().lastUpdate);
.detail("LastUpdate", server->metrics.get().lastUpdate);
server->ssVersionTooFarBehind.set(true);
server->collection->addLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
}
} else if (server->serverMetrics.get().versionLag > SERVER_KNOBS->DD_SS_FAILURE_VERSIONLAG) {
} else if (server->metrics.get().versionLag > SERVER_KNOBS->DD_SS_FAILURE_VERSIONLAG) {
if (server->ssVersionTooFarBehind.get() == false) {
TraceEvent(SevWarn, "SSVersionDiffLarge", server->collection->getDistributorId())
.detail("ServerId", server->id.toString())
.detail("VersionLag", server->serverMetrics.get().versionLag);
.detail("VersionLag", server->metrics.get().versionLag);
server->ssVersionTooFarBehind.set(true);
server->collection->addLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
}
} else if (server->serverMetrics.get().versionLag < SERVER_KNOBS->DD_SS_ALLOWED_VERSIONLAG) {
} else if (server->metrics.get().versionLag < SERVER_KNOBS->DD_SS_ALLOWED_VERSIONLAG) {
if (server->ssVersionTooFarBehind.get() == true) {
TraceEvent("SSVersionDiffNormal", server->collection->getDistributorId())
.detail("ServerId", server->id.toString())
.detail("VersionLag", server->serverMetrics.get().versionLag);
.detail("VersionLag", server->metrics.get().versionLag);
server->ssVersionTooFarBehind.set(false);
server->collection->removeLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
}
@ -138,9 +138,9 @@ TCServerInfo::TCServerInfo(StorageServerInterface ssi,
}
bool TCServerInfo::hasHealthyAvailableSpace(double minAvailableSpaceRatio) const {
ASSERT(serverMetricsPresent());
ASSERT(metricsPresent());
auto& metrics = getServerMetrics();
auto& metrics = getMetrics();
ASSERT(metrics.available.bytes >= 0);
ASSERT(metrics.capacity.bytes >= 0);
@ -199,7 +199,7 @@ void TCServerInfo::removeTeamsContainingServer(UID removedServer) {
}
std::pair<int64_t, int64_t> TCServerInfo::spaceBytes(bool includeInFlight) const {
auto& metrics = getServerMetrics();
auto& metrics = getMetrics();
ASSERT(metrics.capacity.bytes >= 0);
ASSERT(metrics.available.bytes >= 0);
@ -212,7 +212,7 @@ std::pair<int64_t, int64_t> TCServerInfo::spaceBytes(bool includeInFlight) const
}
int64_t TCServerInfo::loadBytes() const {
return getServerMetrics().load.bytes;
return getMetrics().load.bytes;
}
void TCServerInfo::removeTeam(Reference<TCTeamInfo> team) {
@ -373,7 +373,7 @@ int64_t TCTeamInfo::getLoadBytes(bool includeInFlight, double inflightPenalty) c
int64_t TCTeamInfo::getMinAvailableSpace(bool includeInFlight) const {
int64_t minAvailableSpace = std::numeric_limits<int64_t>::max();
for (const auto& server : servers) {
if (server->serverMetricsPresent()) {
if (server->metricsPresent()) {
const auto [bytesAvailable, bytesCapacity] = server->spaceBytes(includeInFlight);
minAvailableSpace = std::min(bytesAvailable, minAvailableSpace);
}
@ -385,7 +385,7 @@ int64_t TCTeamInfo::getMinAvailableSpace(bool includeInFlight) const {
double TCTeamInfo::getMinAvailableSpaceRatio(bool includeInFlight) const {
double minRatio = 1.0;
for (const auto& server : servers) {
if (server->serverMetricsPresent()) {
if (server->metricsPresent()) {
auto [bytesAvailable, bytesCapacity] = server->spaceBytes(includeInFlight);
bytesAvailable = std::max((int64_t)0, bytesAvailable);
@ -404,7 +404,7 @@ bool TCTeamInfo::allServersHaveHealthyAvailableSpace() const {
double minAvailableSpaceRatio =
SERVER_KNOBS->MIN_AVAILABLE_SPACE_RATIO + SERVER_KNOBS->MIN_AVAILABLE_SPACE_RATIO_SAFETY_BUFFER;
for (const auto& server : servers) {
if (!server->serverMetricsPresent() || !server->hasHealthyAvailableSpace(minAvailableSpaceRatio)) {
if (!server->metricsPresent() || !server->hasHealthyAvailableSpace(minAvailableSpaceRatio)) {
result = false;
break;
}
@ -442,7 +442,7 @@ int64_t TCTeamInfo::getLoadAverage() const {
int64_t bytesSum = 0;
int added = 0;
for (const auto& server : servers) {
if (server->serverMetricsPresent()) {
if (server->metricsPresent()) {
added++;
bytesSum += server->loadBytes();
}

View File

@ -46,9 +46,11 @@ class TCServerInfo : public ReferenceCounted<TCServerInfo> {
int64_t dataInFlightToServer;
std::vector<Reference<TCTeamInfo>> teams;
ErrorOr<GetStorageMetricsReply> serverMetrics;
ErrorOr<GetStorageMetricsReply> metrics;
void setServerMetrics(GetStorageMetricsReply serverMetrics) { this->serverMetrics = serverMetrics; }
GetStorageMetricsReply const& getMetrics() const { return metrics.get(); }
void setMetrics(GetStorageMetricsReply serverMetrics) { this->metrics = serverMetrics; }
void markTeamUnhealthy(int teamIndex);
public:
@ -88,8 +90,7 @@ public:
void addTeam(Reference<TCTeamInfo> team) { teams.push_back(team); }
void removeTeamsContainingServer(UID removedServer);
void removeTeam(Reference<TCTeamInfo>);
GetStorageMetricsReply const& getServerMetrics() const { return serverMetrics.get(); }
bool serverMetricsPresent() const { return serverMetrics.present(); }
bool metricsPresent() const { return metrics.present(); }
bool isCorrectStoreType(KeyValueStoreType configStoreType) const {
// A new storage server's store type may not be set immediately.