...
Current state: Under Discussion
Discussion thread: here [Change the link from the KIP proposal email archive to your own email thread]
...
- FindCoordinatorResponse and FindCoordinatorRequests need to update to V3.
- Requests that contains a single groupID still can be supported.
- Compatibility issues between old and new versions need to be considered, we should think about how to convert requests from a newer version to a old version.
One-to-many mapping
Today, converting from a higher version API to a lower version, is through the apiVersions in NetworkClient.java to map the API version number for each node, and then use each request's builder.build() to build a lower version request schema. This conversion is a one-to-one mapping, meaning ONE higher version request gets convert to ONE lower version request.
However, this KIP will change this pattern, because it introduces a batching optimization in the requests, meaning combining MANY requests into ONE request. So we need support a one-to-many backward compatible conversion for requests along with the implementation of this KIP.
The most tricky question is, how do we know if a higher version API has a batching optimization. Discussion is still required and suggestions are highly encouraged, some of the possible solutions involving adding extra fields in AbstractRequest.java.
Rejected Alternatives
- Update the batching logic in KafkaAdmin.java directly instead of modifying the structure of requests and response.
...