YY.Roy created KAFKA-6848:
-----------------------------
Summary: Kafka consumer failed to get correct offset after commit
Key: KAFKA-6848
URL: https://issues.apache.org/jira/browse/KAFKA-6848
Project: Kafka
Issue Type: Bug
Components: core
Affects Versions: 0.11.0.0
Reporter: YY.Roy
I use kafka consumer java api to poll messages from broker, and here is the
code:
Consumer consumer = new Consumer(props);
consumer.assgin(topicPartitions);
long nextOffset = consumer.position(topicPartition);
consumer.poll();
consumer.commitSync();
The above code is called by a quartz scheduler every minute and the group.id is
always the same. It ran properly during past several days until today around
8:20:35 am, the position api always returned the older offset committed two
days ago, not the latest one which was committed around 8:20:33 am. It seems
the kafka offset of this group.id just went backward
I polled the offsets message from the kafka internal topic __consumer_offsets
and saw the lastes message was correct, which is like this:
[eb89887c591b4d2a98c7,my-topic-eb89887c591b4d2a98c7,0]::[OffsetMetadata[447648316,NO_METADATA],CommitTime
1525220421173,ExpirationTime 1526430021173]
The commitTime showed it was indeed the last successful commit.
But then the position api returned a wrong offset, which is the first message
of the corresponding partition of __consumer_offsets. It is like kafka broker
regards this older committed offset is the correct offset of this group.id, but
the correct one should have been last message in the __consumer_offsets.
Then I checked the broker server log and found at that time there are some
connection errors, which just the same time the position is called.
08:20:33,261 WARN Attempting to send response via channel for which there is no
open connection, connection id 2 (kafka.network.Processor)
There are some other consumer trying to call position at this time and the
leader of those topics are this broker too. After that they call get a wrong
offset which were older commits in __consumer_offsets.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)