[
https://issues.apache.org/jira/browse/KAFKA-1588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14105519#comment-14105519
]
Sriharsha Chintalapani commented on KAFKA-1588:
-----------------------------------------------
[~toddpalino]
I gone through kafka-python code .Please correct me if I am doing something
wrong.
I am sending two OffsetRequests
offsets=kafka.send_offset_request([ OffsetRequest("my-topic", 0, -2, 1),
OffsetRequest("my-topic", 0, -1, 1)])
in send_offset_request which calls Protocol.encode_offset_request
it get these above two payloads but convert them into a grouped_payloads which
is a dict
this is what it looks like
payloads
[OffsetRequest(topic='my-topic', partition=0, time=-2, max_offsets=1),
OffsetRequest(topic='my-topic', partition=0, time=-1, max_offsets=1)]
grouped_payloads
defaultdict(<type 'dict'>, {'my-topic': {0: OffsetRequest(topic='my-topic',
partition=0, time=-1, max_offsets=1)}})
Kafka api expects it to be Map with key being topic name
so even though you are sending two requests using client.send_offset_request
if the topic is the same it will be overwritten and only one request is being
sent to kafka.
The two OffsetResponses coming back because in
client._send_broker_aware_request it takes the keys from your two requests in
this case it will form [('my-topic', 0), ('my-topic', 0)] (check original_keys
variable) and the response is constructed by looping over this original_keys
and returns the same OffsetResponse twice
# Order the accumulated responses by the original key order
return (acc[k] for k in original_keys) if acc else ()
[~junrao] [~guozhang]
Please let me know if its ok to support two offsetRequest for the same topic in
a single call. This would also means we might allow duplicate requests for the
same topic,partition, offset. Changing to a list instead of map probably be
easier way but how about the backward compatability. I can follow the version
for protocol changes to support both .
> Offset response does not support two requests for the same topic/partition
> combo
> --------------------------------------------------------------------------------
>
> Key: KAFKA-1588
> URL: https://issues.apache.org/jira/browse/KAFKA-1588
> Project: Kafka
> Issue Type: Bug
> Affects Versions: 0.8.2
> Reporter: Todd Palino
> Assignee: Sriharsha Chintalapani
> Labels: newbie
>
> When performing an OffsetRequest, if you request the same topic and partition
> combination in a single request more than once (for example, if you want to
> get both the head and tail offsets for a partition in the same request), you
> will get a response for both, but they will be the same offset.
> We identified that the problem is that when the offset response is assembled,
> a map is used to store the offset info before it is converted to the response
> format and sent to the client. Therefore, the second request for a
> topic/partition combination will overwrite the offset from the first request.
--
This message was sent by Atlassian JIRA
(v6.2#6252)