...
Imagine a case where the '/features'
ZK node is non-existent. In such a case, when the controller starts up, it would create the ZK node for the first time (this is a blocking write that needs to succeed for the controller to continue its startup sequence). The data used to create the node, will be a map of {feature_name → {min_feature_version, max_feature_version}}
. This is obtained by the controller service from the broker's supported features. This approach brings convenience to users bootstrapping a Kafka cluster for the first time (with a specific Kafka Broker release). The controller finalizes the default min/max feature version levels automatically.
Changes to Kafka Controller
We introduce 1 new Admin API that’s served only by the controllerKafka Controller, and identified by the new API key: ApiKeys.UPDATE_FEATURES
. This API enables transactional application of a set of cluster-wide feature updates to the ZK '/features'
node (i.e. either all provided FeatureUpdate
are applied to ZK, or none):
...