Alexey Kudinkin created HUDI-3365:
-------------------------------------

             Summary: Make sure Metadata Records always bear full file-size
                 Key: HUDI-3365
                 URL: https://issues.apache.org/jira/browse/HUDI-3365
             Project: Apache Hudi
          Issue Type: Bug
            Reporter: Alexey Kudinkin


Currently, when log-file is appended the Metadata Table record w/ the size of 
appended delta will be submitted to MT. 

MT, in turn, will sum it up with whatever record is currently persisted there 
at the moment (REF: 
[https://github.com/apache/hudi/blob/master/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataPayload.java#L227)]

 

This is problematic in multiple ways:
 # We're abusing FileStatus interface which unequivocally relates the size as a 
full file-size.
 # MT receiving new record can't determine whether it's received a delta or a 
new record that have to override the old one. As such, it stick to the 
protocol, that if record already exists it will treat new one as a delta.

This behavior is very implicit, and there are currently at least one bug where 
actually full file-size is provided, while it would lead to the incorrect file 
size being stored in MT.

 

Proposal: Unify the data flow and always provide full, up-to-date file-size to 
the MT. Even in the log-file appending flow, we do have a way to reconstruct 
full file-size (from `AppendResult`, w/o additional `getFileStatus` necessary

 

Currently, when log-file is appended (on FS that supports it), only the 
appended delta will be submitted w/in records to MT



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to