Nickstery commented on code in PR #14104: URL: https://github.com/apache/kafka/pull/14104#discussion_r1302833394
########## core/src/test/java/kafka/log/remote/RemoteLogManagerTest.java: ########## @@ -558,6 +619,126 @@ void testCopyLogSegmentsToRemoteShouldNotCopySegmentForFollower() throws Excepti verify(mockLog, never()).updateHighestOffsetInRemoteStorage(anyLong()); } + @Test + void testCopyLogSegmentsToRemoteShouldNotCopySegmentWithMissingIndexes() throws Exception { + long segmentStartOffset = 0L; + + // leader epoch preparation + checkpoint.write(totalEpochEntries); + LeaderEpochFileCache cache = new LeaderEpochFileCache(leaderTopicIdPartition.topicPartition(), checkpoint); + when(mockLog.leaderEpochCache()).thenReturn(Option.apply(cache)); + when(remoteLogMetadataManager.highestOffsetForEpoch(any(TopicIdPartition.class), anyInt())).thenReturn(Optional.of(0L)); + + // create log segment, with 0 as log start offset + LogSegment segment = mock(LogSegment.class); + + when(segment.baseOffset()).thenReturn(segmentStartOffset); + + when(mockLog.activeSegment()).thenReturn(segment); + when(mockLog.logStartOffset()).thenReturn(segmentStartOffset); + when(mockLog.logSegments(anyLong(), anyLong())).thenReturn(JavaConverters.collectionAsScalaIterable(Arrays.asList(segment))); + when(mockLog.lastStableOffset()).thenReturn(150L); + + RemoteLogManager.RLMTask task = remoteLogManager.new RLMTask(leaderTopicIdPartition); + task.copyLogSegmentsToRemote(mockLog); + + // verify the remoteLogMetadataManager never add any metadata and remoteStorageManager never copy log segments + // Since segment with index corruption should not be uploaded + verify(remoteLogMetadataManager, never()).addRemoteLogSegmentMetadata(any(RemoteLogSegmentMetadata.class)); + verify(remoteStorageManager, never()).copyLogSegmentData(any(RemoteLogSegmentMetadata.class), any(LogSegmentData.class)); + verify(remoteLogMetadataManager, never()).updateRemoteLogSegmentMetadata(any(RemoteLogSegmentMetadataUpdate.class)); + } + + @Test + void testCorruptedTimeIndexes() throws Exception { Review Comment: Added -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org