[
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 <[email protected]>
Reviewed-by: Attila Bukor <[email protected]>
> 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)