change exclusions so that they calculate free space based on storage servers only

This commit is contained in:
John King 2017-07-19 15:50:15 -07:00
parent 50fb44be92
commit f6d282e66a
1 changed files with 14 additions and 9 deletions

View File

@ -1674,7 +1674,18 @@ ACTOR Future<bool> exclude( Database db, std::vector<StringRef> tokens, Referenc
state double worstFreeSpaceRatio = 1.0;
try {
for (auto proc : processesMap.obj()){
bool storageServer = false;
StatusArray rolesArray = proc.second.get_obj()["roles"].get_array();
for (StatusObjectReader role : rolesArray) {
if (role["role"].get_str() == "storage") {
storageServer = true;
break;
}
}
// Skip non-storage servers in free space calculation
if (!storageServer)
continue;
StatusObjectReader process(proc.second);
std::string addrStr;
if (!process.get("address", addrStr)) {
@ -1683,6 +1694,9 @@ ACTOR Future<bool> exclude( Database db, std::vector<StringRef> tokens, Referenc
}
NetworkAddress addr = NetworkAddress::parse(addrStr);
bool excluded = (process.has("excluded") && process.last().get_bool()) || addressExcluded(exclusions, addr);
ssTotalCount++;
if (excluded)
ssExcludedCount++;
if(!excluded) {
StatusObjectReader disk;
@ -1705,15 +1719,6 @@ ACTOR Future<bool> exclude( Database db, std::vector<StringRef> tokens, Referenc
worstFreeSpaceRatio = std::min(worstFreeSpaceRatio, double(free_bytes)/total_bytes);
}
for (StatusObjectReader role : rolesArray) {
if (role["role"].get_str() == "storage") {
if (excluded)
ssExcludedCount++;
ssTotalCount++;
break;
}
}
}
}
catch (...) // std::exception