Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Add the new transaction version and group version features. For every metadata version, we will map to the corresponding transaction and group version. For MVs that existed before these features, we map the new features to version 0.

Changes to UpdateFeaturesResponse

We will bump the version of the request/response and mark the results field as only for versions 0-1.

Code Block
{
  "apiKey": 57,
  "type": "response",
  "name": "UpdateFeaturesResponse",
  "validVersions": "0-2",
  "flexibleVersions": "0+",
  "fields": [
    { "name": "ThrottleTimeMs", "type": "int32", "versions": "0+",
      "about": "The duration in milliseconds for which the request was throttled due to a quota violation, or zero if the request did not violate any quota." },
    { "name": "ErrorCode", "type": "int16", "versions": "0+",
      "about": "The top-level error code, or `0` if there was no top-level error." },
    { "name": "ErrorMessage", "type": "string", "versions": "0+", "nullableVersions": "0+",
      "about": "The top-level error message, or `null` if there was no top-level error." },
    { "name": "Results", "type": "[]UpdatableFeatureResult", "versions": "0-1", "ignorable": true,
      "about": "Results for each feature update.", "fields": [
      { "name": "Feature", "type": "string", "versions": "0+", "mapKey": true,
        "about": "The name of the finalized feature."},
      { "name": "ErrorCode", "type": "int16", "versions": "0+",
        "about": "The feature update error code or `0` if the feature update succeeded." },
      { "name": "ErrorMessage", "type": "string", "versions": "0+", "nullableVersions": "0+",
        "about": "The feature update error, or `null` if the feature update succeeded." }
    ]}
  ]
}

The following changes will also be made to this request/response.

  1. Any update request will fail fast if a single feature fails to update. This error will become the top level error in the response, and no feature level responses will be returned. The top level error contains the feature that failed. If there is any error, none of the updates will persist.
  2. For V2 requests and above, successful updates (NONE error code) will also not contain the results field.

Fixing KAFKA-17011 and KAFKA-17492

...

Old versions of the tool will continue to behave as they did. Features other than metadata can not be set or upgraded. The new version of upgrade tool can be used on clusters created with the old feature tool to update features. The apis already exist as of KIP-584.the old feature tool to update features. The apis already exist as of KIP-584.

Older versions (v0 and v1) of UpdateFeaturesResponse will now: 
1) fail fast, make the error the top level error and have no feature level error responses if there is an error

2) not update features if a single update failed

A Note on Feature Interdependence

...

The UpdateFeaturesReponse will fail fast and contain a top level INVALID_UPDATE_VERSION  level error if any feature fails to update and no updates will persist if a single feature in the requrest request fails validation. The same INVALID_UPDATE_VERSION  error will be specified in UpdatableFeatureResult.ErrorCode for the features that failed. This will be accompanied with UpdatableFeatureResult.ErrorMessage an error message explaining the dependency.

...