From b8e57f37d7176b02189eb0f003f90e2350593fb9 Mon Sep 17 00:00:00 2001 From: "A.J. Beamon" Date: Thu, 15 Aug 2019 14:42:49 -0700 Subject: [PATCH 1/3] Add 'coordinator' to the list of roles that a process can have in status. --- .../source/mr-status-json-schemas.rst.inc | 3 ++- fdbclient/Schemas.cpp | 3 ++- fdbserver/Status.actor.cpp | 19 +++++++++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/documentation/sphinx/source/mr-status-json-schemas.rst.inc b/documentation/sphinx/source/mr-status-json-schemas.rst.inc index ff9ae86947..727e7ecdfd 100644 --- a/documentation/sphinx/source/mr-status-json-schemas.rst.inc +++ b/documentation/sphinx/source/mr-status-json-schemas.rst.inc @@ -66,7 +66,8 @@ "cluster_controller", "data_distributor", "ratekeeper", - "router" + "router", + "coordinator" ] }, "data_version":12341234, diff --git a/fdbclient/Schemas.cpp b/fdbclient/Schemas.cpp index 06fd8f4041..0a6306bbed 100644 --- a/fdbclient/Schemas.cpp +++ b/fdbclient/Schemas.cpp @@ -86,7 +86,8 @@ const KeyRef JSONSchemas::statusSchema = LiteralStringRef(R"statusSchema( "cluster_controller", "data_distributor", "ratekeeper", - "router" + "router", + "coordinator" ] }, "data_version":12341234, diff --git a/fdbserver/Status.actor.cpp b/fdbserver/Status.actor.cpp index 5c3f9d3bd7..47ae0adb63 100644 --- a/fdbserver/Status.actor.cpp +++ b/fdbserver/Status.actor.cpp @@ -551,6 +551,11 @@ struct RolesInfo { JsonBuilderObject& addRole(std::string const& role, InterfaceType& iface) { return addRole(iface.address(), role, iface.id()); } + JsonBuilderObject& addCoordinatorRole(NetworkAddress addr) { + JsonBuilderObject obj; + obj["role"] = "coordinator"; + return roles.insert(std::make_pair(addr, obj))->second; + } JsonBuilderArray getStatusForAddress( NetworkAddress a ) { JsonBuilderArray v; auto it = roles.lower_bound(a); @@ -565,10 +570,11 @@ struct RolesInfo { ACTOR static Future processStatusFetcher( Reference> db, std::vector workers, WorkerEvents pMetrics, WorkerEvents mMetrics, WorkerEvents nMetrics, WorkerEvents errors, WorkerEvents traceFileOpenErrors, - WorkerEvents programStarts, std::map> processIssues, + WorkerEvents programStarts, std::map> processIssues, vector> storageServers, vector> tLogs, vector> proxies, - Database cx, Optional configuration, Optional healthyZone, std::set* incomplete_reasons) { + ServerCoordinators coordinators, Database cx, Optional configuration, + Optional healthyZone, std::set* incomplete_reasons) { state JsonBuilderObject processMap; @@ -649,6 +655,10 @@ ACTOR static Future processStatusFetcher( } } + for(auto& coordinator : coordinators.ccf->getConnectionString().coordinators()) { + roles.addCoordinatorRole(coordinator); + } + state std::vector>::iterator proxy; for(proxy = proxies.begin(); proxy != proxies.end(); ++proxy) { roles.addRole( "proxy", proxy->first, proxy->second ); @@ -2293,8 +2303,9 @@ ACTOR Future clusterGetStatus( JsonBuilderObject processStatus = wait(processStatusFetcher(db, workers, pMetrics, mMetrics, networkMetrics, latestError, traceFileOpenErrors, programStarts, - processIssues, storageServers, tLogs, proxies, cx, - configuration, loadResult.present() ? loadResult.get().healthyZone : Optional(), + processIssues, storageServers, tLogs, proxies, + coordinators, cx, configuration, + loadResult.present() ? loadResult.get().healthyZone : Optional(), &status_incomplete_reasons)); statusObj["processes"] = processStatus; statusObj["clients"] = clientStatusFetcher(clientStatus); From bc54ee5a530d6ba0bbb9c4ef7d55fcd362789a03 Mon Sep 17 00:00:00 2001 From: "A.J. Beamon" Date: Thu, 15 Aug 2019 14:43:54 -0700 Subject: [PATCH 2/3] Add release note --- documentation/sphinx/source/release-notes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/sphinx/source/release-notes.rst b/documentation/sphinx/source/release-notes.rst index cde95d0889..b6ae92d3b0 100644 --- a/documentation/sphinx/source/release-notes.rst +++ b/documentation/sphinx/source/release-notes.rst @@ -54,6 +54,7 @@ Status * ``connected_clients`` is now only a sample of the connected clients, rather than a complete list. `(PR #1902) `_. * Added ``max_protocol_clients`` to the ``supported_versions`` section, which provides a sample of connected clients which cannot connect to any higher protocol version. `(PR #1902) `_. * Clients which connect without specifying their supported versions are tracked as an ``Unknown`` version in the ``supported_versions`` section. [6.2.2] `(PR #1990) `_. +* Add ``coordinator`` to the list of roles that can be reported for a process. [6.2.3] `(PR #2006) `_. Bindings -------- From dc534aea1afb464585f9db87bf049cf1d5aa018a Mon Sep 17 00:00:00 2001 From: "A.J. Beamon" Date: Thu, 15 Aug 2019 14:44:39 -0700 Subject: [PATCH 3/3] Fix spacing --- documentation/sphinx/source/mr-status-json-schemas.rst.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/sphinx/source/mr-status-json-schemas.rst.inc b/documentation/sphinx/source/mr-status-json-schemas.rst.inc index 727e7ecdfd..ef6f8fd785 100644 --- a/documentation/sphinx/source/mr-status-json-schemas.rst.inc +++ b/documentation/sphinx/source/mr-status-json-schemas.rst.inc @@ -67,7 +67,7 @@ "data_distributor", "ratekeeper", "router", - "coordinator" + "coordinator" ] }, "data_version":12341234,