Incompatible connection monitoring doesn't work with the multi-version client in 6.2
- Dominant language
- C++
- Stars
- 16.7k
- Forks
- 1.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 126
Description
FoundationDB includes a feature in status to report the connections to the cluster that aren't compatible with the cluster's version. In order to deal with the incompatible connections coming from the multi-version client, all of the connection attempts from different client versions include a connection ID, and any incompatible connection with an ID matching a successful connection on the same process is ignored.
In 6.2, the connection behavior of clients has changed such that they no longer attempt to connect to all of the coordinators. That means that for a single client using the multi-version API, one version may talk to one coordinator (or all of them, for pre-6.2 versions), while another version may talk to another. The process that sees the incompatible connection may not be the same one that gets the compatible one, and as a result the client is erroneously considered incompatible.
I'm not sure there's much we can do to resolve this is 6.2. For future versions, though, we want to try to restore this incompatible connection accounting. One possible solution is trying to collect the list of successful and incompatible connections in one location for analysis (though we should be careful about scalability in the number of clients). Another alternative that sounds appealing is to update the multi-version client to stop trying to connect over incompatible versions when another version has successfully connected.
Contributor guide
Assessment
This issue has not been assessed yet.