Table of Contents |
---|
Status
Current state: Under DiscussionAccepted
Discussion thread: Thread
...
ApiVersionsRequest is bumped to version 3 with two new fields. ApiVersionsRequest ApiVersionsRequest version is a flexible version (KIP-482: The Kafka Protocol should Support Optional Tagged Fields).
...
ApiVersionsResponse is bumped to version 3 but does not have any changes in the schema. Note that ApiVersionsResponse is flexible version but the response header is not a flexible version. This is necessary because the client must look at a fixed offset to find the error code, regardless of the response version, to remain backward compatible.
Code Block | ||
---|---|---|
| ||
{ "apiKey": 18, "type": "response", "name": "ApiVersionsResponse", // Version 1 adds throttle time to the response. // Starting in version 2, on quota violation, brokers send out responses before throttling. // // Version 3 is the samefirst asflexible version 2. Tagged fields are only supported in the body but // not in the header. The length of the header must not change in order to guarantee the // backward compatibility. // // Starting from Apache Kafka 2.4, ApiKeys field is populated with the supported versions of // the ApiVersionsRequest when an UNSUPPORTED_VERSION error is returned. "validVersions": "0-3", "flexibleVersions": "none3+", "fields": [ { "name": "ErrorCode", "type": "int16", "versions": "0+", "about": "The top-level error code." }, { "name": "ApiKeys", "type": "[]ApiVersionsResponseKey", "versions": "0+", "about": "The APIs supported by the broker.", "fields": [ { "name": "Index", "type": "int16", "versions": "0+", "mapKey": true, "about": "The API index." }, { "name": "MinVersion", "type": "int16", "versions": "0+", "about": "The minimum supported version, inclusive." }, { "name": "MaxVersion", "type": "int16", "versions": "0+", "about": "The maximum supported version, inclusive." } ]}, { "name": "ThrottleTimeMs", "type": "int32", "versions": "1+", "ignorable": true, "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." } ] } |
Errors
Errors.INVALID_REQUEST is added.
Code Block |
---|
public enum Errors {
...
INVALID_REQUEST(XX, "The validation of the request has failed.", InvalidRequestException::new);
...
}
public class InvalidRequestException extends ApiException {
public InvalidRequestException(String message) {
super(message);
}
} |
Metrics
We will add few metrics in the broker to surface information about the connected clients.
...