| 1672 | } |
| 1673 | |
| 1674 | static JsonBuilderObject configurationFetcher(Optional<DatabaseConfiguration> conf, |
| 1675 | ServerCoordinators coordinators, |
| 1676 | std::set<std::string>* incomplete_reasons) { |
| 1677 | JsonBuilderObject statusObj; |
| 1678 | try { |
| 1679 | if (conf.present()) { |
| 1680 | DatabaseConfiguration configuration = conf.get(); |
| 1681 | statusObj.addContents(configuration.toJSON()); |
| 1682 | |
| 1683 | JsonBuilderArray excludedServersArr; |
| 1684 | std::set<AddressExclusion> excludedServers = configuration.getExcludedServers(); |
| 1685 | for (std::set<AddressExclusion>::iterator it = excludedServers.begin(); it != excludedServers.end(); it++) { |
| 1686 | JsonBuilderObject statusObj; |
| 1687 | statusObj["address"] = it->toString(); |
| 1688 | excludedServersArr.push_back(statusObj); |
| 1689 | } |
| 1690 | std::set<std::string> excludedLocalities = configuration.getExcludedLocalities(); |
| 1691 | for (const auto& it : excludedLocalities) { |
| 1692 | JsonBuilderObject statusObj; |
| 1693 | statusObj["locality"] = it; |
| 1694 | excludedServersArr.push_back(statusObj); |
| 1695 | } |
| 1696 | statusObj["excluded_servers"] = excludedServersArr; |
| 1697 | } |
| 1698 | int count = coordinators.clientLeaderServers.size(); |
| 1699 | statusObj["coordinators_count"] = count; |
| 1700 | } catch (Error&) { |
| 1701 | incomplete_reasons->insert("Could not retrieve all configuration status information."); |
| 1702 | } |
| 1703 | return statusObj; |
| 1704 | } |
| 1705 | |
| 1706 | ACTOR static Future<JsonBuilderObject> dataStatusFetcher(WorkerDetails ddWorker, |
| 1707 | DatabaseConfiguration configuration, |
no test coverage detected