Versions Compared

Key

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

...

To resolve this dilemma, there are two approaches:

  1. Modify the minimum version from 0 to 1 to pass old client validation. The advantage is that the client will receive an error message, but this removes the ability to disable the feature. [1] (deprecate)
  2. Omit features version 0 in requests. The downside of this solution is that it won't trigger any error messages. [2]

We chose the first solution [1] in KAFKA-17011, since the scope of impact for this solution is relatively small, so we created a new version 4 for ApiVersionsRequest. Clients sending v4 will be able to handle ranges including 0, while clients sending v3 will never see ranges starting with 0. These ranges will instead be translated to start at 1.

Similarly, for BrokerRegistrationRequest, we will create a new version 4. Servers which accept v4 promise to be able to handle ranges including 0. Servers which do not will get ranges that only start with 1, rather than 0. 

There is another issue with BrokerRegistrationRequest when we choose the solution [1]: when a new version broker sends a BrokerRegistrationRequest to an old version controller, the new request sets the minSupportedVersion to 1. However, the old controller doesn’t support the version range of minSupportVersion to maxSupportVersion, leading to a dilemma, thus we must to change the solution from [1] to [2].

In KAFKA-17492, we implemented the second solution [2] while keeping the new version v4 for ApiVersionsRequest. Clients sending versions v0-v3 with minSupportedVersion 0 will have that version omitted.

...