Grant Henke created KUDU-3211:
---------------------------------
Summary: Add a cluster supported features request
Key: KUDU-3211
URL: https://issues.apache.org/jira/browse/KUDU-3211
Project: Kudu
Issue Type: Improvement
Components: master, supportability
Affects Versions: 1.13.0
Reporter: Grant Henke
Assignee: Grant Henke
Recently we have come across a few scenarios where it would be useful to make
decisions in client integrations (Backup/Restore, Spark, NiFi, Impala) based on
the supported features of the target Kudu cluster. This can especially helpful
when we want to use new features by default if available but using the new
feature requires client/integration logic changes.
Some recent examples:
- Push bloomfilter predicates only if supported
- Use insert ignore operations (vs session based ignore) only if supported
It is technically possible to be optimistic about the support of a feature and
try to handle errors in a clever way using the required feature capabilities of
the RPCs. However, that can be difficult to express and near impossible if you
want to make a decision for multiple requests or based on what all tablet
servers support instead of based on a single request to a single tablet server.
Additionally now that we support rolling restart, we can't assume that because
a single master or tablet server supports a feature that all servers in the
cluster support the feature.
Some thoughts on the feature/implementation:
- This should be a master request in order to prevent needing to talk to all
the tablet servers.
- We could leverage server registration requests or heartbeats to aggregate the
current state on the leader master.
- We could represent these features as "cluster" level features and indicate
that some (union) or all (intersect) of the servers support a given feature.
- If this request/response is not available in a cluster the response would
indicate that feature support is unknown and the user can decide how to proceed.
- If we want to support disabling features via runtime flags we will need to
ensure we update the master, maybe via heartbeat, with changed support for a
running server.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)