[ 
https://issues.apache.org/jira/browse/KUDU-3211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Grant Henke reassigned KUDU-3211:
---------------------------------

    Assignee:     (was: Grant Henke)

> 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
>            Priority: Major
>
> 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)

Reply via email to