[ https://issues.apache.org/jira/browse/KAFKA-1841?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14270222#comment-14270222 ]
Jun Rao commented on KAFKA-1841: -------------------------------- This is actually a bit tricky to fix. To make this really backward compatible, we have to make sure that version 0 of OffsetCommitRequest only writes to ZK. However, this doesn't quite work together with OffsetFetchRequest since in 0.8.2, it only has one version and it always reads offsets from Kafka. To address this issue, I bumped up the version of OffsetFetchRequest in 0.8.2 (with same wire protocol). Then, version 0 of OffsetFetchRequest will read from ZK and version 1 of OffsetFetchRequest will read from Kafka. This works as long as people are only using released final version. However, since this introduces an incompatible change of OffsetFetchRequest in 0.8.2-beta and trunk, this will create problems for people (assuming that they are using this api) who have a deployment of 0.8.2-beta and want to upgrade to 0.8.2 final, or a deployment from trunk and want to upgrade to a later version of trunk in the future. In either case, the upgrade of the broker will cause the old client to behave differently and incorrectly. > OffsetCommitRequest API - timestamp field is not versioned > ---------------------------------------------------------- > > Key: KAFKA-1841 > URL: https://issues.apache.org/jira/browse/KAFKA-1841 > Project: Kafka > Issue Type: Bug > Components: core > Affects Versions: 0.8.2 > Environment: wire-protocol > Reporter: Dana Powers > Assignee: Jun Rao > Priority: Blocker > Fix For: 0.8.2 > > Attachments: kafka-1841.patch, kafka-1841_2015-01-08_15:07:57.patch > > > Timestamp field was added to the OffsetCommitRequest wire protocol api for > 0.8.2 by KAFKA-1012 . The 0.8.1.1 server does not support the timestamp > field, so I think the api version of OffsetCommitRequest should be > incremented and checked by the 0.8.2 kafka server before attempting to read a > timestamp from the network buffer in OffsetCommitRequest.readFrom > (core/src/main/scala/kafka/api/OffsetCommitRequest.scala) > It looks like a subsequent patch (KAFKA-1462) added another api change to > support a new constructor w/ params generationId and consumerId, calling that > version 1, and a pending patch (KAFKA-1634) adds retentionMs as another > field, while possibly removing timestamp altogether, calling this version 2. > So the fix here is not straightforward enough for me to submit a patch. > This could possibly be merged into KAFKA-1634, but opening as a separate > Issue because I believe the lack of versioning in the current trunk should > block 0.8.2 release. -- This message was sent by Atlassian JIRA (v6.3.4#6332)