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)