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

Chris Pettitt commented on KAFKA-8755:
--------------------------------------

BUG 3 was caused by a call to `StandbyTask.update` with no records that are 
below the `offsetLimit`. When this happens `stateMgr.updateStandbyStates` 
resets the checkpoint to 0. I've fixed this by only calling 
`stateMgr.updateStandbyStates` when there are one or more records restored.

This introduces one more bug (BUG 5), which is that we still call restore after 
failover, but with start and end offsets both set to the last correctly 
checkpointed value. The non-optimized case does not go into restore at all. I 
suspect this has to do with the end offset for the topic being larger than the 
checkpointed value, which is not the case for the non-optimized case.

> Stand-by Task of an Optimized Source Table Does Not Write Anything to its 
> State Store
> -------------------------------------------------------------------------------------
>
>                 Key: KAFKA-8755
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8755
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.4.0
>            Reporter: Bruno Cadonna
>            Assignee: Chris Pettitt
>            Priority: Major
>              Labels: newbie
>         Attachments: StandbyTaskTest.java
>
>
> With the following topology:
> {code:java}
> builder.table(
>     INPUT_TOPIC, 
>     Consumed.with(Serdes.Integer(), Serdes.Integer()), 
>     Materialized.<Integer, Integer, KeyValueStore<Bytes, byte[]>>as(stateName)
> )
> {code}
> and with topology optimization turned on, Kafka Streams uses the input topic 
> {{INPUT_TOPIC}} as the change log topic for state store {{stateName}}. A 
> stand-by task for such a topology should read from {{INPUT_TOPIC}} and should 
> write the records to its state store so that the streams client that runs the 
> stand-by task can take over the execution of the topology in case of a 
> failure with an up-to-date replica of the state.
> Currently, the stand-by task described above reads from the input topic but 
> does not write the records to its state store. Thus, after a failure the 
> stand-by task cannot provide any up-to-date state store and the streams 
> client needs to construct the state from scratch before it can take over the 
> execution.
> The described behaviour can be reproduced with the attached test.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to