Merge pull request #1990 from etschannen/release-6.2

Fixed status reporting bugs related to connected clients
This commit is contained in:
Evan Tschannen 2019-08-13 16:24:12 -07:00 committed by GitHub
commit a067e6e812
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 24 deletions

View File

@ -10,38 +10,38 @@ macOS
The macOS installation package is supported on macOS 10.7+. It includes the client and (optionally) the server.
* `FoundationDB-6.2.1.pkg <https://www.foundationdb.org/downloads/6.2.1/macOS/installers/FoundationDB-6.2.1.pkg>`_
* `FoundationDB-6.2.2.pkg <https://www.foundationdb.org/downloads/6.2.2/macOS/installers/FoundationDB-6.2.2.pkg>`_
Ubuntu
------
The Ubuntu packages are supported on 64-bit Ubuntu 12.04+, but beware of the Linux kernel bug in Ubuntu 12.x.
* `foundationdb-clients-6.2.1-1_amd64.deb <https://www.foundationdb.org/downloads/6.2.1/ubuntu/installers/foundationdb-clients_6.2.1-1_amd64.deb>`_
* `foundationdb-server-6.2.1-1_amd64.deb <https://www.foundationdb.org/downloads/6.2.1/ubuntu/installers/foundationdb-server_6.2.1-1_amd64.deb>`_ (depends on the clients package)
* `foundationdb-clients-6.2.2-1_amd64.deb <https://www.foundationdb.org/downloads/6.2.2/ubuntu/installers/foundationdb-clients_6.2.2-1_amd64.deb>`_
* `foundationdb-server-6.2.2-1_amd64.deb <https://www.foundationdb.org/downloads/6.2.2/ubuntu/installers/foundationdb-server_6.2.2-1_amd64.deb>`_ (depends on the clients package)
RHEL/CentOS EL6
---------------
The RHEL/CentOS EL6 packages are supported on 64-bit RHEL/CentOS 6.x.
* `foundationdb-clients-6.2.1-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.1/rhel6/installers/foundationdb-clients-6.2.1-1.el6.x86_64.rpm>`_
* `foundationdb-server-6.2.1-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.1/rhel6/installers/foundationdb-server-6.2.1-1.el6.x86_64.rpm>`_ (depends on the clients package)
* `foundationdb-clients-6.2.2-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.2/rhel6/installers/foundationdb-clients-6.2.2-1.el6.x86_64.rpm>`_
* `foundationdb-server-6.2.2-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.2/rhel6/installers/foundationdb-server-6.2.2-1.el6.x86_64.rpm>`_ (depends on the clients package)
RHEL/CentOS EL7
---------------
The RHEL/CentOS EL7 packages are supported on 64-bit RHEL/CentOS 7.x.
* `foundationdb-clients-6.2.1-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.1/rhel7/installers/foundationdb-clients-6.2.1-1.el7.x86_64.rpm>`_
* `foundationdb-server-6.2.1-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.1/rhel7/installers/foundationdb-server-6.2.1-1.el7.x86_64.rpm>`_ (depends on the clients package)
* `foundationdb-clients-6.2.2-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.2/rhel7/installers/foundationdb-clients-6.2.2-1.el7.x86_64.rpm>`_
* `foundationdb-server-6.2.2-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.2.2/rhel7/installers/foundationdb-server-6.2.2-1.el7.x86_64.rpm>`_ (depends on the clients package)
Windows
-------
The Windows installer is supported on 64-bit Windows XP and later. It includes the client and (optionally) the server.
* `foundationdb-6.2.1-x64.msi <https://www.foundationdb.org/downloads/6.2.1/windows/installers/foundationdb-6.2.1-x64.msi>`_
* `foundationdb-6.2.2-x64.msi <https://www.foundationdb.org/downloads/6.2.2/windows/installers/foundationdb-6.2.2-x64.msi>`_
API Language Bindings
=====================
@ -58,18 +58,18 @@ On macOS and Windows, the FoundationDB Python API bindings are installed as part
If you need to use the FoundationDB Python API from other Python installations or paths, download the Python package:
* `foundationdb-6.2.1.tar.gz <https://www.foundationdb.org/downloads/6.2.1/bindings/python/foundationdb-6.2.1.tar.gz>`_
* `foundationdb-6.2.2.tar.gz <https://www.foundationdb.org/downloads/6.2.2/bindings/python/foundationdb-6.2.2.tar.gz>`_
Ruby 1.9.3/2.0.0+
-----------------
* `fdb-6.2.1.gem <https://www.foundationdb.org/downloads/6.2.1/bindings/ruby/fdb-6.2.1.gem>`_
* `fdb-6.2.2.gem <https://www.foundationdb.org/downloads/6.2.2/bindings/ruby/fdb-6.2.2.gem>`_
Java 8+
-------
* `fdb-java-6.2.1.jar <https://www.foundationdb.org/downloads/6.2.1/bindings/java/fdb-java-6.2.1.jar>`_
* `fdb-java-6.2.1-javadoc.jar <https://www.foundationdb.org/downloads/6.2.1/bindings/java/fdb-java-6.2.1-javadoc.jar>`_
* `fdb-java-6.2.2.jar <https://www.foundationdb.org/downloads/6.2.2/bindings/java/fdb-java-6.2.2.jar>`_
* `fdb-java-6.2.2-javadoc.jar <https://www.foundationdb.org/downloads/6.2.2/bindings/java/fdb-java-6.2.2-javadoc.jar>`_
Go 1.11+
--------

View File

@ -2,7 +2,7 @@
Release Notes
#############
6.2.0
6.2.2
=====
Performance
@ -53,6 +53,7 @@ Status
* ``fdbcli`` status now reports the configured zone count. The fault tolerance is now reported in terms of the number of zones unless machine IDs are being used as zone IDs. `(PR #1924) <https://github.com/apple/foundationdb/pull/1924>`_.
* ``connected_clients`` is now only a sample of the connected clients, rather than a complete list. `(PR #1902) <https://github.com/apple/foundationdb/pull/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) <https://github.com/apple/foundationdb/pull/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) <https://github.com/apple/foundationdb/pull/1990>`_.
Bindings
--------
@ -90,6 +91,7 @@ Fixes only impacting 6.2.0+
* Clients could crash when closing connections with incompatible servers. [6.2.1] `(PR #1976) <https://github.com/apple/foundationdb/pull/1976>`_.
* Do not close idle network connections with incompatible servers. [6.2.1] `(PR #1976) <https://github.com/apple/foundationdb/pull/1976>`_.
* In status, ``max_protocol_clients`` were incorrectly added to the ``connected_clients`` list. [6.2.2] `(PR #1990) <https://github.com/apple/foundationdb/pull/1990>`_.
Earlier release notes
---------------------

View File

@ -541,6 +541,7 @@ OpenDatabaseRequest ClientData::getRequest() {
std::map<StringRef, ClientStatusStats> issueMap;
std::map<ClientVersionRef, ClientStatusStats> versionMap;
std::map<StringRef, ClientStatusStats> maxProtocolMap;
int clientCount = 0;
//SOMEDAY: add a yield in this loop
for(auto& ci : clientStatusInfoMap) {
@ -551,20 +552,29 @@ OpenDatabaseRequest ClientData::getRequest() {
entry.examples.push_back(std::make_pair(ci.first, ci.second.traceLogGroup));
}
}
StringRef maxProtocol;
for(auto& it : ci.second.versions) {
maxProtocol = std::max(maxProtocol, it.protocolVersion);
auto& entry = versionMap[it];
if(ci.second.versions.size()) {
clientCount++;
StringRef maxProtocol;
for(auto& it : ci.second.versions) {
maxProtocol = std::max(maxProtocol, it.protocolVersion);
auto& entry = versionMap[it];
entry.count++;
if(entry.examples.size() < CLIENT_KNOBS->CLIENT_EXAMPLE_AMOUNT) {
entry.examples.push_back(std::make_pair(ci.first, ci.second.traceLogGroup));
}
}
auto& maxEntry = maxProtocolMap[maxProtocol];
maxEntry.count++;
if(maxEntry.examples.size() < CLIENT_KNOBS->CLIENT_EXAMPLE_AMOUNT) {
maxEntry.examples.push_back(std::make_pair(ci.first, ci.second.traceLogGroup));
}
} else {
auto& entry = versionMap[ClientVersionRef()];
entry.count++;
if(entry.examples.size() < CLIENT_KNOBS->CLIENT_EXAMPLE_AMOUNT) {
entry.examples.push_back(std::make_pair(ci.first, ci.second.traceLogGroup));
}
}
auto& maxEntry = maxProtocolMap[maxProtocol];
maxEntry.count++;
if(maxEntry.examples.size() < CLIENT_KNOBS->CLIENT_EXAMPLE_AMOUNT) {
maxEntry.examples.push_back(std::make_pair(ci.first, ci.second.traceLogGroup));
}
}
req.issues.reserve(issueMap.size());
@ -579,7 +589,7 @@ OpenDatabaseRequest ClientData::getRequest() {
for(auto& it : maxProtocolMap) {
req.maxProtocolSupported.push_back(ItemWithExamples<Key>(it.first, it.second.count, it.second.examples));
}
req.clientCount = clientStatusInfoMap.size();
req.clientCount = clientCount;
return req;
}

View File

@ -931,7 +931,7 @@ static JsonBuilderObject clientStatusFetcher(std::map<NetworkAddress, std::pair<
JsonBuilderObject cli;
cli["address"] = client.first.toString();
cli["log_group"] = client.second.toString();
clients.push_back(cli);
maxClients.push_back(cli);
}
ver["max_protocol_count"] = iter->second.count;
ver["max_protocol_clients"] = maxClients;