Make getServerMetrics private to TCServerInfo class and rename some methods to remove redundant reference to 'server'
This commit is contained in:
parent
7bad6c5093
commit
8be519a5d8
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue