mirror of
https://github.com/apple/foundationdb.git
synced 2025-06-02 03:12:12 +08:00
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->disableBuildingTeams();
|
||||||
collection->setCheckTeamDelay();
|
collection->setCheckTeamDelay();
|
||||||
|
|
||||||
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
|
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
|
||||||
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(4, 0)]->setServerMetrics(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
|
* Suppose 1, 2 and 3 are complete sources, i.e., they have all shards in
|
||||||
@ -5372,10 +5372,10 @@ public:
|
|||||||
collection->disableBuildingTeams();
|
collection->disableBuildingTeams();
|
||||||
collection->setCheckTeamDelay();
|
collection->setCheckTeamDelay();
|
||||||
|
|
||||||
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
|
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
|
||||||
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
|
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -5435,10 +5435,10 @@ public:
|
|||||||
* least utilized, if the caller says they preferLowerUtilization.
|
* least utilized, if the caller says they preferLowerUtilization.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
|
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
|
||||||
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
|
||||||
|
|
||||||
bool wantsNewServers = true;
|
bool wantsNewServers = true;
|
||||||
bool wantsTrueBest = true;
|
bool wantsTrueBest = true;
|
||||||
@ -5485,10 +5485,10 @@ public:
|
|||||||
collection->disableBuildingTeams();
|
collection->disableBuildingTeams();
|
||||||
collection->setCheckTeamDelay();
|
collection->setCheckTeamDelay();
|
||||||
|
|
||||||
collection->server_info[UID(1, 0)]->setServerMetrics(mid_avail);
|
collection->server_info[UID(1, 0)]->setMetrics(mid_avail);
|
||||||
collection->server_info[UID(2, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(2, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(4, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(4, 0)]->setMetrics(high_avail);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Among server teams that have healthy space available, pick the team that is
|
* Among server teams that have healthy space available, pick the team that is
|
||||||
@ -5539,10 +5539,10 @@ public:
|
|||||||
collection->disableBuildingTeams();
|
collection->disableBuildingTeams();
|
||||||
collection->setCheckTeamDelay();
|
collection->setCheckTeamDelay();
|
||||||
|
|
||||||
collection->server_info[UID(1, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(1, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(2, 0)]->setServerMetrics(low_avail);
|
collection->server_info[UID(2, 0)]->setMetrics(low_avail);
|
||||||
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(4, 0)]->setServerMetrics(low_avail);
|
collection->server_info[UID(4, 0)]->setMetrics(low_avail);
|
||||||
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
|
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -5599,11 +5599,11 @@ public:
|
|||||||
collection->disableBuildingTeams();
|
collection->disableBuildingTeams();
|
||||||
collection->setCheckTeamDelay();
|
collection->setCheckTeamDelay();
|
||||||
|
|
||||||
collection->server_info[UID(1, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(1, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(2, 0)]->setServerMetrics(low_avail);
|
collection->server_info[UID(2, 0)]->setMetrics(low_avail);
|
||||||
collection->server_info[UID(3, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(3, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(4, 0)]->setServerMetrics(low_avail);
|
collection->server_info[UID(4, 0)]->setMetrics(low_avail);
|
||||||
collection->server_info[UID(5, 0)]->setServerMetrics(high_avail);
|
collection->server_info[UID(5, 0)]->setMetrics(high_avail);
|
||||||
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
|
collection->server_info[UID(1, 0)]->markTeamUnhealthy(0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -37,7 +37,7 @@ public:
|
|||||||
choose {
|
choose {
|
||||||
when(ErrorOr<GetStorageMetricsReply> rep = wait(metricsRequest)) {
|
when(ErrorOr<GetStorageMetricsReply> rep = wait(metricsRequest)) {
|
||||||
if (rep.present()) {
|
if (rep.present()) {
|
||||||
server->serverMetrics = rep;
|
server->metrics = rep;
|
||||||
if (server->updated.canBeSet()) {
|
if (server->updated.canBeSet()) {
|
||||||
server->updated.send(Void());
|
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) {
|
if (server->ssVersionTooFarBehind.get() == false) {
|
||||||
TraceEvent("StorageServerStuck", server->collection->getDistributorId())
|
TraceEvent("StorageServerStuck", server->collection->getDistributorId())
|
||||||
.detail("ServerId", server->id.toString())
|
.detail("ServerId", server->id.toString())
|
||||||
.detail("LastUpdate", server->serverMetrics.get().lastUpdate);
|
.detail("LastUpdate", server->metrics.get().lastUpdate);
|
||||||
server->ssVersionTooFarBehind.set(true);
|
server->ssVersionTooFarBehind.set(true);
|
||||||
server->collection->addLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
|
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) {
|
if (server->ssVersionTooFarBehind.get() == false) {
|
||||||
TraceEvent(SevWarn, "SSVersionDiffLarge", server->collection->getDistributorId())
|
TraceEvent(SevWarn, "SSVersionDiffLarge", server->collection->getDistributorId())
|
||||||
.detail("ServerId", server->id.toString())
|
.detail("ServerId", server->id.toString())
|
||||||
.detail("VersionLag", server->serverMetrics.get().versionLag);
|
.detail("VersionLag", server->metrics.get().versionLag);
|
||||||
server->ssVersionTooFarBehind.set(true);
|
server->ssVersionTooFarBehind.set(true);
|
||||||
server->collection->addLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
|
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) {
|
if (server->ssVersionTooFarBehind.get() == true) {
|
||||||
TraceEvent("SSVersionDiffNormal", server->collection->getDistributorId())
|
TraceEvent("SSVersionDiffNormal", server->collection->getDistributorId())
|
||||||
.detail("ServerId", server->id.toString())
|
.detail("ServerId", server->id.toString())
|
||||||
.detail("VersionLag", server->serverMetrics.get().versionLag);
|
.detail("VersionLag", server->metrics.get().versionLag);
|
||||||
server->ssVersionTooFarBehind.set(false);
|
server->ssVersionTooFarBehind.set(false);
|
||||||
server->collection->removeLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
|
server->collection->removeLaggingStorageServer(server->lastKnownInterface.locality.zoneId().get());
|
||||||
}
|
}
|
||||||
@ -138,9 +138,9 @@ TCServerInfo::TCServerInfo(StorageServerInterface ssi,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TCServerInfo::hasHealthyAvailableSpace(double minAvailableSpaceRatio) const {
|
bool TCServerInfo::hasHealthyAvailableSpace(double minAvailableSpaceRatio) const {
|
||||||
ASSERT(serverMetricsPresent());
|
ASSERT(metricsPresent());
|
||||||
|
|
||||||
auto& metrics = getServerMetrics();
|
auto& metrics = getMetrics();
|
||||||
ASSERT(metrics.available.bytes >= 0);
|
ASSERT(metrics.available.bytes >= 0);
|
||||||
ASSERT(metrics.capacity.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 {
|
std::pair<int64_t, int64_t> TCServerInfo::spaceBytes(bool includeInFlight) const {
|
||||||
auto& metrics = getServerMetrics();
|
auto& metrics = getMetrics();
|
||||||
ASSERT(metrics.capacity.bytes >= 0);
|
ASSERT(metrics.capacity.bytes >= 0);
|
||||||
ASSERT(metrics.available.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 {
|
int64_t TCServerInfo::loadBytes() const {
|
||||||
return getServerMetrics().load.bytes;
|
return getMetrics().load.bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCServerInfo::removeTeam(Reference<TCTeamInfo> team) {
|
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 TCTeamInfo::getMinAvailableSpace(bool includeInFlight) const {
|
||||||
int64_t minAvailableSpace = std::numeric_limits<int64_t>::max();
|
int64_t minAvailableSpace = std::numeric_limits<int64_t>::max();
|
||||||
for (const auto& server : servers) {
|
for (const auto& server : servers) {
|
||||||
if (server->serverMetricsPresent()) {
|
if (server->metricsPresent()) {
|
||||||
const auto [bytesAvailable, bytesCapacity] = server->spaceBytes(includeInFlight);
|
const auto [bytesAvailable, bytesCapacity] = server->spaceBytes(includeInFlight);
|
||||||
minAvailableSpace = std::min(bytesAvailable, minAvailableSpace);
|
minAvailableSpace = std::min(bytesAvailable, minAvailableSpace);
|
||||||
}
|
}
|
||||||
@ -385,7 +385,7 @@ int64_t TCTeamInfo::getMinAvailableSpace(bool includeInFlight) const {
|
|||||||
double TCTeamInfo::getMinAvailableSpaceRatio(bool includeInFlight) const {
|
double TCTeamInfo::getMinAvailableSpaceRatio(bool includeInFlight) const {
|
||||||
double minRatio = 1.0;
|
double minRatio = 1.0;
|
||||||
for (const auto& server : servers) {
|
for (const auto& server : servers) {
|
||||||
if (server->serverMetricsPresent()) {
|
if (server->metricsPresent()) {
|
||||||
auto [bytesAvailable, bytesCapacity] = server->spaceBytes(includeInFlight);
|
auto [bytesAvailable, bytesCapacity] = server->spaceBytes(includeInFlight);
|
||||||
bytesAvailable = std::max((int64_t)0, bytesAvailable);
|
bytesAvailable = std::max((int64_t)0, bytesAvailable);
|
||||||
|
|
||||||
@ -404,7 +404,7 @@ bool TCTeamInfo::allServersHaveHealthyAvailableSpace() const {
|
|||||||
double minAvailableSpaceRatio =
|
double minAvailableSpaceRatio =
|
||||||
SERVER_KNOBS->MIN_AVAILABLE_SPACE_RATIO + SERVER_KNOBS->MIN_AVAILABLE_SPACE_RATIO_SAFETY_BUFFER;
|
SERVER_KNOBS->MIN_AVAILABLE_SPACE_RATIO + SERVER_KNOBS->MIN_AVAILABLE_SPACE_RATIO_SAFETY_BUFFER;
|
||||||
for (const auto& server : servers) {
|
for (const auto& server : servers) {
|
||||||
if (!server->serverMetricsPresent() || !server->hasHealthyAvailableSpace(minAvailableSpaceRatio)) {
|
if (!server->metricsPresent() || !server->hasHealthyAvailableSpace(minAvailableSpaceRatio)) {
|
||||||
result = false;
|
result = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -442,7 +442,7 @@ int64_t TCTeamInfo::getLoadAverage() const {
|
|||||||
int64_t bytesSum = 0;
|
int64_t bytesSum = 0;
|
||||||
int added = 0;
|
int added = 0;
|
||||||
for (const auto& server : servers) {
|
for (const auto& server : servers) {
|
||||||
if (server->serverMetricsPresent()) {
|
if (server->metricsPresent()) {
|
||||||
added++;
|
added++;
|
||||||
bytesSum += server->loadBytes();
|
bytesSum += server->loadBytes();
|
||||||
}
|
}
|
||||||
|
@ -46,9 +46,11 @@ class TCServerInfo : public ReferenceCounted<TCServerInfo> {
|
|||||||
|
|
||||||
int64_t dataInFlightToServer;
|
int64_t dataInFlightToServer;
|
||||||
std::vector<Reference<TCTeamInfo>> teams;
|
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);
|
void markTeamUnhealthy(int teamIndex);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -88,8 +90,7 @@ public:
|
|||||||
void addTeam(Reference<TCTeamInfo> team) { teams.push_back(team); }
|
void addTeam(Reference<TCTeamInfo> team) { teams.push_back(team); }
|
||||||
void removeTeamsContainingServer(UID removedServer);
|
void removeTeamsContainingServer(UID removedServer);
|
||||||
void removeTeam(Reference<TCTeamInfo>);
|
void removeTeam(Reference<TCTeamInfo>);
|
||||||
GetStorageMetricsReply const& getServerMetrics() const { return serverMetrics.get(); }
|
bool metricsPresent() const { return metrics.present(); }
|
||||||
bool serverMetricsPresent() const { return serverMetrics.present(); }
|
|
||||||
|
|
||||||
bool isCorrectStoreType(KeyValueStoreType configStoreType) const {
|
bool isCorrectStoreType(KeyValueStoreType configStoreType) const {
|
||||||
// A new storage server's store type may not be set immediately.
|
// A new storage server's store type may not be set immediately.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user