[ 
https://issues.apache.org/jira/browse/KUDU-3211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17228614#comment-17228614
 ] 

ASF subversion and git services commented on KUDU-3211:
-------------------------------------------------------

Commit 07cdc32eb70303a1abc628d14669c3208ab202cc in kudu's branch 
refs/heads/master from Grant Henke
[ https://gitbox.apache.org/repos/asf?p=kudu.git;h=07cdc32 ]

KUDU-1563. Add a feature flag for IGNORE operations

This patch adds a master server feature flag to indicate that the cluster
supports `IGNORE` operations. This includes INSERT_IGNORE, DELETE_IGNORE,
and UPDATE_IGNORE. Though this is technically a tserver feature, it is
unreasonable to check if every tablet server supports this feature.
Instead we use the master as a proxy.

In the future KUDU-3211 will add more complete cluster feature flag support.

Additionally this patch leverages the feature flag in the Java client on a
PingRequest to implement a `supportsIgnoreOperations()` method. This
functionality will be used in follow on patches to add ignore operation support
to the Spark and Backup integrations in a compatible way.

Change-Id: I329bd8bde73d247240ae597b677e2cc20a92343a
Reviewed-on: http://gerrit.cloudera.org:8080/16698
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <aser...@cloudera.com>
Reviewed-by: Attila Bukor <abu...@apache.org>


> 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
>            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