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

Attila Sasvari commented on KAFKA-6822:
---------------------------------------

[~phil.mikhailov] I wonder if it is related to 
[KAFKA-6367|https://issues.apache.org/jira/browse/KAFKA-6367] - Fix 
StateRestoreListener To Use Correct Batch Ending Offset which is fixed in 1.0.1 
& 1.1.0. Can you re-test with 1.0.1?

> Kafka Consumer 0.10.2.1 can not normally read data from Kafka 1.0.0
> -------------------------------------------------------------------
>
>                 Key: KAFKA-6822
>                 URL: https://issues.apache.org/jira/browse/KAFKA-6822
>             Project: Kafka
>          Issue Type: Bug
>          Components: consumer
>            Reporter: Phil Mikhailov
>            Priority: Major
>
> We faced the problem when StateStore (0.10.2.1) stuck in loading data during 
> start of microservice.
>  Our configuration is Kafka 1.0.0 but microservices are built with Kafka 
> Streams 0.10.2.1.
>  We had to reset the stream offsets in order unblock microservices 'cause 
> restarts didn't help.
> We faced the problem only once and didn't have a chance to reproduce it, so 
> we're sorry in advance for maybe poor explanations.
> Below are details that we've managed to collect that time:
> Kafka consumer 0.10.2.1 calculates offsets like this:
>  Fetcher:524
> {code:java}
> long nextOffset = partRecords.get(partRecords.size() - 1).offset() + 1;
> {code}
> Get the latest offset from records (which were got from {{poll}}) plus 1.
>  So the next offset is estimated.
> In Kafka 1.0.0 otherwise broker explicitly provides the next offset to fetch:
> {code:java}
> long nextOffset = partitionRecords.nextFetchOffset;
> {code}
> It returns the actual next offset but not estimated.
>  
> That said, we had a situation when StateStore (0.10.2.1) stuck in loading 
> data. The reason was in {{ProcessorStateManager.restoreActiveState:245}} 
> which kept spinning in consumer loop 'cause this condition never happened:
> {code:java}
>        } else if (restoreConsumer.position(storePartition) == endOffset) {
>            break;
>        }
> {code}
>  
> We assume that consumer 0.10.2.1 estimates endoffset incorrectly in a case of 
> compaction. 
>  Or there is inconsistency between offsets calculation between 0.10.2.1 and 
> 1.0.0 which doesn't allow to use 0.10.2.1 consumer with 1.0.0 broker.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to