[ https://issues.apache.org/jira/browse/KAFKA-13073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konstantine Karantasis resolved KAFKA-13073. -------------------------------------------- Resolution: Fixed > Simulation test fails due to inconsistency in MockLog's implementation > ---------------------------------------------------------------------- > > Key: KAFKA-13073 > URL: https://issues.apache.org/jira/browse/KAFKA-13073 > Project: Kafka > Issue Type: Bug > Components: controller, replication > Affects Versions: 3.0.0 > Reporter: Jose Armando Garcia Sancio > Assignee: Jose Armando Garcia Sancio > Priority: Major > Labels: kip-500 > Fix For: 3.0.0 > > > We are getting the following error on trunk > {code:java} > RaftEventSimulationTest > canRecoverAfterAllNodesKilled STANDARD_OUT > timestamp = 2021-07-12T16:26:55.663, > RaftEventSimulationTest:canRecoverAfterAllNodesKilled = > java.lang.RuntimeException: > Uncaught exception during poll of node 1 > |-------------------jqwik------------------- > tries = 25 | # of calls to property > checks = 25 | # of not rejected calls > generation = RANDOMIZED | parameters are randomly generated > after-failure = PREVIOUS_SEED | use the previous seed > when-fixed-seed = ALLOW | fixing the random seed is allowed > edge-cases#mode = MIXIN | edge cases are mixed in > edge-cases#total = 108 | # of all combined edge cases > edge-cases#tried = 4 | # of edge cases tried in current run > seed = 8079861963960994566 | random seed to reproduce generated values > Sample > ------ > arg0: 4002 > arg1: 2 > arg2: 4{code} > I think there are a couple of issues here: > # The {{ListenerContext}} for {{KafkaRaftClient}} uses the value returned by > {{ReplicatedLog::startOffset()}} to determined the log start and when to load > a snapshot while the {{MockLog}} implementation uses {{logStartOffset}} which > could be a different value. > # {{MockLog}} doesn't implement {{ReplicatedLog::maybeClean}} so the log > start offset is always 0. > # The snapshot id validation for {{MockLog}} and {{KafkaMetadataLog}}'s > {{createNewSnapshot}} throws an exception when the snapshot id is less than > the log start offset. > Solutions: > Fix the error quoted above we only need to fix bullet point 3. but I think we > should fix all of the issues enumerated in this Jira. > For 1. we should change the {{MockLog}} implementation so that it uses > {{startOffset}} both externally and internally. > For 2. I will file another issue to track this implementation. > For 3. I think this validation is too strict. I think it is safe to simply > ignore any attempt by the state machine to create an snapshot with an id less > that the log start offset. We should return a {{Optional.empty()}}when the > snapshot id is less than the log start offset. This tells the user that it > doesn't need to generate a snapshot for that offset. -- This message was sent by Atlassian Jira (v8.3.4#803005)