[ https://issues.apache.org/jira/browse/HUDI-6688?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated HUDI-6688: --------------------------------- Labels: pull-request-available (was: ) > Fix partition validation to only consider commits in metadata table validator > ----------------------------------------------------------------------------- > > Key: HUDI-6688 > URL: https://issues.apache.org/jira/browse/HUDI-6688 > Project: Apache Hudi > Issue Type: Bug > Reporter: Ethan Guo > Assignee: Ethan Guo > Priority: Blocker > Labels: pull-request-available > Fix For: 0.14.0 > > > The completed rollback in data table's timeline interferes with the partition > validation in the metadata table validator. Only commits should be > considered in the validation. See the following example. > Timeline of DT and MDT: > {code:java} > ╔═════╤═══════════════════╤═════════════╤═══════════╤═══════════════════╤═════════════╤═════════════╤═════════════╤═════════════╤═══════════╤═════════════╤═════════════╤═════════════╗ > ║ No. │ Instant │ Action │ State │ Rollback Info │ > Requested │ Inflight │ Completed │ MT │ MT │ MT > │ MT │ MT ║ > ║ │ │ │ │ │ > Time │ Time │ Time │ Action │ State │ Requested > │ Inflight │ Completed ║ > ║ │ │ │ │ │ > │ │ │ │ │ Time │ > Time │ Time ║ > ╠═════╪═══════════════════╪═════════════╪═══════════╪═══════════════════╪═════════════╪═════════════╪═════════════╪═════════════╪═══════════╪═════════════╪═════════════╪═════════════╣ > ║ 0 │ 00000000000000010 │ - │ - │ - │ - > │ - │ - │ deltacommit │ COMPLETED │ 08-11 23:59 │ > 08-11 23:59 │ 08-11 23:59 ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 1 │ 00000000000000011 │ - │ - │ - │ - > │ - │ - │ deltacommit │ COMPLETED │ 08-11 23:59 │ > 08-11 23:59 │ 08-11 23:59 ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 2 │ 20230812065907463 │ deltacommit │ INFLIGHT │ Rolled back by │ > 08-11 23:59 │ 08-12 00:00 │ - │ - │ - │ - > │ - │ - ║ > ║ │ │ │ │ 20230812070238150 │ > │ │ │ │ │ │ > │ ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 3 │ 20230812070238150 │ rollback │ INFLIGHT │ Rolls back │ > 08-12 00:02 │ 08-12 00:02 │ - │ - │ - │ - > │ - │ - ║ > ║ │ │ │ │ 20230812065907463 │ > │ │ │ │ │ │ > │ ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 4 │ 20230812070241429 │ - │ - │ - │ - > │ - │ - │ rollback │ COMPLETED │ 08-12 00:02 │ > 08-12 00:02 │ 08-12 00:02 ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 5 │ 20230812070351902 │ deltacommit │ REQUESTED │ - │ > 08-12 00:04 │ - │ - │ - │ - │ - > │ - │ - ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 6 │ 20230812070532879 │ deltacommit │ REQUESTED │ - │ > 08-12 00:06 │ - │ - │ - │ - │ - > │ - │ - ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 7 │ 20230812070605364 │ rollback │ COMPLETED │ Rolls back │ > 08-12 00:06 │ 08-12 00:06 │ 08-12 00:06 │ deltacommit │ COMPLETED │ 08-12 > 00:06 │ 08-12 00:06 │ 08-12 00:06 ║ > ║ │ │ │ │ 20230812070205857 │ > │ │ │ │ │ │ > │ ║ > ╟─────┼───────────────────┼─────────────┼───────────┼───────────────────┼─────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┼─────────────┼─────────────╢ > ║ 8 │ 20230812070606670 │ - │ - │ - │ - > │ - │ - │ rollback │ COMPLETED │ 08-12 00:06 │ > 08-12 00:06 │ 08-12 00:06 ║ > ╚═════╧═══════════════════╧═════════════╧═══════════╧═══════════════════╧═════════════╧═════════════╧═════════════╧═════════════╧═══════════╧═════════════╧═════════════╧═════════════╝ > {code} > The partition metadata: > {code:java} > 2023/06/24/.hoodie_partition_metadata > #partition metadata > #Sat Aug 12 07:00:21 UTC 2023 > commitTime=20230812065907463 > partitionDepth=3 > {code} > Validator throws the exception: > {code:java} > org.apache.hudi.exception.HoodieValidationException: Compare Partitions > Failed! AllPartitionPathsFromFS : [2023/06/24, 2023/06/25, 2023/06/26, > 2023/06/27, 2023/06/28, 2023/06/29, 2023/06/30, 2023/07/01, 2023/07/02, > 2023/07/03] and allPartitionPathsMeta : [] > at > org.apache.hudi.utilities.HoodieMetadataTableValidator.validatePartitions(HoodieMetadataTableValidator.java:558) > at > org.apache.hudi.utilities.HoodieMetadataTableValidator.doMetadataTableValidation(HoodieMetadataTableValidator.java:435) > at > org.apache.hudi.utilities.HoodieMetadataTableValidator.doHoodieMetadataTableValidationOnce(HoodieMetadataTableValidator.java:377) > at > org.apache.hudi.utilities.HoodieMetadataTableValidator.run(HoodieMetadataTableValidator.java:362) > at > org.apache.hudi.utilities.HoodieMetadataTableValidator.main(HoodieMetadataTableValidator.java:342) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52) > at > org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:955) > at > org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180) > at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203) > at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90) > at > org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043) > at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052) > at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)