[ 
https://issues.apache.org/jira/browse/KAFKA-1927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14360637#comment-14360637
 ] 

Jun Rao commented on KAFKA-1927:
--------------------------------

The following is a rough outline to do this.

1. kafka.network.Request: 
Change the way that we deserialize bytes into object. Basically, we will first 
deserialize the common request header. Then, based on the request id, we 
deserialize the remaining bytes into the specific request object in 
org.apache.kafka.common.requests. The requestObj will now be represented as the 
header object plus org.apache.kafka.common.requests.AbstractRequestResponse.

2. In KafkaApis: Change all request/response references to those in 
org.apache.kafka.common.requests. We will have to do some conversion from java 
to scala (for things like map and list). It will be good if such conversion can 
be done just once in an isolated scope.

3. We will need to leave all the scala request/response objects used by 
SimpleConsumer for now since they are part of the public api. Once the scala 
consumer is deprecated, we can delete those objects. The rest of the scala 
request/response objects that are only used by the broker code can be 
immediately removed.



> Replace requests in kafka.api with requests in 
> org.apache.kafka.common.requests
> -------------------------------------------------------------------------------
>
>                 Key: KAFKA-1927
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1927
>             Project: Kafka
>          Issue Type: Improvement
>            Reporter: Jay Kreps
>
> The common package introduced a better way of defining requests using a new 
> protocol definition DSL and also includes wrapper objects for these.
> We should switch KafkaApis over to use these request definitions and consider 
> the scala classes deprecated (we probably need to retain some of them for a 
> while for the scala clients).
> This will be a big improvement because
> 1. We will have each request now defined in only one place (Protocol.java)
> 2. We will have built-in support for multi-version requests
> 3. We will have much better error messages (no more cryptic underflow errors)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to