You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kudu.apache.org by "Dan Burkert (Code Review)" <ge...@cloudera.org> on 2016/03/10 22:33:05 UTC
[kudu-CR] rpc: add negotiation of RPC-layer feature flags
Hello Kudu Jenkins,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/2238
to look at the new patch set (#2).
Change subject: rpc: add negotiation of RPC-layer feature flags
......................................................................
rpc: add negotiation of RPC-layer feature flags
This extends the RPC system with a simple mechanism for advertising
a set of supported feature flags during connection establishment.
The list of supported features is hard-coded in the build, and is
used in lieu of a version number in order to communicate which
capabilities an RPC client or server supports.
There are several advantages of feature flags over version numbers:
- since we have both a Java and C++ client, this allows us to add
features in different orders, or decide to not support a feature
at all in one client or the other. For example, the C++ client
is likely to gain support for a shared-memory transport long before
the Java one.
- this allows much more flexibility in backporting RPC system features
across versions. For example, if we introduce feature 'A' in Kudu
2.0, and feature 'B' in Kudu 2.1, we are still able to selectively
backport 'B' without 'A' to Kudu 1.5.
- currently, the set of supported features is determined only by
code-level support, but we could later decide to conditionally
enable features based on configuration or machine capability.
The most reasonable place to add the exchange of feature flags was
to add them to the existing SASL negotiation messages, where we
already had an unused 'version' field. The naming is not great, given
that the SASL negotiation is now negotiating more than just SASL,
but I didn't want to feature-creep into a wholesale rename or refactor,
and adding a separate negotiation phase would waste an extra round trip
as well as be difficult to add compatibly.
Change-Id: Ib9c7fdf03920496c12d92eba23d8d4f7b7cb8fc5
---
M src/kudu/rpc/constants.cc
M src/kudu/rpc/constants.h
M src/kudu/rpc/negotiation.h
M src/kudu/rpc/rpc_header.proto
M src/kudu/rpc/sasl_client.cc
M src/kudu/rpc/sasl_client.h
M src/kudu/rpc/sasl_rpc-test.cc
M src/kudu/rpc/sasl_server.cc
M src/kudu/rpc/sasl_server.h
9 files changed, 96 insertions(+), 3 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/38/2238/2
--
To view, visit http://gerrit.cloudera.org:8080/2238
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ib9c7fdf03920496c12d92eba23d8d4f7b7cb8fc5
Gerrit-PatchSet: 2
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Todd Lipcon <to...@apache.org>
Gerrit-Reviewer: Dan Burkert <da...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@cloudera.com>
Gerrit-Reviewer: Jean-Daniel Cryans
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>