Johnny Hsu created KAFKA-16419: ---------------------------------- Summary: Abstract validateMessagesAndAssignOffsetsCompressed of LogValidator to simply the process Key: KAFKA-16419 URL: https://issues.apache.org/jira/browse/KAFKA-16419 Project: Kafka Issue Type: Improvement Reporter: Johnny Hsu Assignee: Johnny Hsu
Currently in the LogValidator.validateMessagesAndAssignOffsetsCompressed, there are lots of if-else checks based on the `magic` and `CompressionType`, which makes the code complicated and increase the difficulties of maintaining. The flow of the validation can be separated into x steps: # IBP validation ## whether the compression type is valid for this IBP # In-place assignment enablement check ## based on the magic value and compression type, decide whether we can do in-place assignment # batch level validation ## based on the batch origin (client, controller, etc) and magic version # record level validation ## based on whether we can do in-place assignment, choose different iterator ## based on the magic and compression type, do different validation # return validated results ## based on whether we can do in-place assignment, build the records or assign it This whole flow can be extracted into an interface, and the LogValidator.validateMessagesAndAssignOffsetsCompressed can init an implementation based on the passed-in records. The implementation class will have the following fields: # magic value # source compression type # target compression type # origin # records # timestamp type -- This message was sent by Atlassian Jira (v8.20.10#820010)