[ https://issues.apache.org/jira/browse/KAFKA-12333?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jose Armando Garcia Sancio updated KAFKA-12333: ----------------------------------------------- Description: Both the MockLog and KafkaMetadataLog should only allow appendAsLeader and appendAsFollower with monotonically increasing epochs. In other words the following test in KafkaMetadataLogTest should fail: {code:java} @Test def testOutOfOrderEpoch(): Unit = { val topicPartition = new TopicPartition("cluster-metadata", 0) val log = buildMetadataLog(tempDir, mockTime, topicPartition) val recordFoo = new SimpleRecord("foo".getBytes()) val currentEpoch = 3 val initialOffset = log.endOffset().offset log.appendAsLeader( MemoryRecords.withRecords(initialOffset, CompressionType.NONE, currentEpoch, recordFoo), currentEpoch ) // Out order epoch should throw an exception log.appendAsLeader( MemoryRecords.withRecords( initialOffset + 1, CompressionType.NONE, currentEpoch - 1, recordFoo ), currentEpoch - 1 ) log.appendAsFollower( MemoryRecords.withRecords( initialOffset + 2, CompressionType.NONE, currentEpoch - 2, recordFoo ) ) } {code} The same for MockLogTest. was: Both the MockLog and KafkaMetadataLog should only allow appendAsLeader and appendAsFollower with monotonically increasing epochs. In other words the following test in KafkaMetadataLogTest should fail: {code:java} @Test def testOutOfOrderEpoch(): Unit = { val topicPartition = new TopicPartition("cluster-metadata", 0) val log = buildMetadataLog(tempDir, mockTime, topicPartition) val recordFoo = new SimpleRecord("foo".getBytes()) val currentEpoch = 3 val initialOffset = log.endOffset().offset log.appendAsLeader( MemoryRecords.withRecords(initialOffset, CompressionType.NONE, currentEpoch, recordFoo), currentEpoch ) // Out order epoch should throw an exception log.appendAsLeader( MemoryRecords.withRecords( initialOffset + 1, CompressionType.NONE, currentEpoch - 1, recordFoo ), currentEpoch - 1 ) log.appendAsFollower( MemoryRecords.withRecords( initialOffset + 2, CompressionType.NONE, currentEpoch - 2, recordFoo ) ) } {code} The same for MockLogTest. > KafkaMetadataLog and MockLock should validate that appended epochs are > monotonically > ------------------------------------------------------------------------------------ > > Key: KAFKA-12333 > URL: https://issues.apache.org/jira/browse/KAFKA-12333 > Project: Kafka > Issue Type: Sub-task > Components: replication > Reporter: Jose Armando Garcia Sancio > Assignee: HaiyuanZhao > Priority: Major > > Both the MockLog and KafkaMetadataLog should only allow appendAsLeader and > appendAsFollower with monotonically increasing epochs. In other words the > following test in KafkaMetadataLogTest should fail: > {code:java} > @Test > def testOutOfOrderEpoch(): Unit = { > val topicPartition = new TopicPartition("cluster-metadata", 0) > val log = buildMetadataLog(tempDir, mockTime, topicPartition) val > recordFoo = new SimpleRecord("foo".getBytes()) > val currentEpoch = 3 > val initialOffset = log.endOffset().offset log.appendAsLeader( > MemoryRecords.withRecords(initialOffset, CompressionType.NONE, > currentEpoch, recordFoo), > currentEpoch > ) // Out order epoch should throw an exception > log.appendAsLeader( > MemoryRecords.withRecords( > initialOffset + 1, CompressionType.NONE, currentEpoch - 1, recordFoo > ), > currentEpoch - 1 > ) > log.appendAsFollower( > MemoryRecords.withRecords( > initialOffset + 2, CompressionType.NONE, currentEpoch - 2, recordFoo > ) > ) > } {code} > The same for MockLogTest. -- This message was sent by Atlassian Jira (v8.3.4#803005)