[
https://issues.apache.org/jira/browse/HUDI-1502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17258035#comment-17258035
]
Vinoth Chandar edited comment on HUDI-1502 at 1/4/21, 7:41 AM:
---------------------------------------------------------------
Same issue can exist for pending rollbacks also.
Say a file group started with a base file f
* had a failed delta commit at time t1, adding .f.log.1
* rollback adds another command block at t2, .f.log.2 and deletes the failed
commit at t1
there would exist .f.log.1 on storage, but no way of knowing this to sync to
metadata table, since we only sync the completed instants, so this is
problematic.
cc [~nishith29] as well
was (Author: vc):
Same issue can exist for pending rollbacks also.
Say a file group started with a base file f
* had a failed delta commit at time t1, adding .f.log.1
* rollback adds another command block at t2, .f.log.2 and deletes the failed
commit at t1
there would exist .f.log.1 on storage, but no way of knowing this to sync to
metadata table, since we only sync the completed instants, so this is
problematic.
cc [~nishith29] as well
> Restore on MOR table leaves metadata table out-of-sync from data table
> ----------------------------------------------------------------------
>
> Key: HUDI-1502
> URL: https://issues.apache.org/jira/browse/HUDI-1502
> Project: Apache Hudi
> Issue Type: Bug
> Components: Writer Core
> Reporter: Vinoth Chandar
> Assignee: Vinoth Chandar
> Priority: Blocker
> Fix For: 0.7.0
>
> Attachments: image-2021-01-03-22-48-54-646.png
>
>
> Below is the stack trace from running `TestHoodieBackedMetadata#testSync` on
> MOR tables. This seems like a more fundamental issue with deleting instant
> files, during restore.
> So what happens is that we restore which rolls back a delta commit that has
> not been synced yet. (20210103224054 in the e.g) And that delta commit has
> introduced a new log file, which has not been added to the metadata table.
> But the restore effectively deletes the 20210103224054.deltacommit.
> {code}
> Commit 20210103224042 added HoodieKey { recordKey=2016/03/15
> partitionPath=files} HoodieMetadataPayload {key=2016/03/15, type=2,
> creations=[6b8f2187-5505-40ae-845e-a71a2163d064-0_4-2-6_20210103224041.parquet],
> deletions=[], }
> HoodieKey { recordKey=2015/03/16 partitionPath=files}
> HoodieMetadataPayload {key=2015/03/16, type=2,
> creations=[028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_1-9-19_20210103224042.parquet,
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_0-9-18_20210103224042.parquet],
> deletions=[], }
> HoodieKey { recordKey=2015/03/17 partitionPath=files}
> HoodieMetadataPayload {key=2015/03/17, type=2,
> creations=[2ab899de-4745-43c5-9fa4-d09721d3aa91-0_1-2-3_20210103224041.parquet,
> 4733dbda-7824-4411-a708-4b2d978f887b-0_4-9-22_20210103224042.parquet,
> 532a6f9b-ca89-4b96-84b7-0e3b13068b4b-0_3-9-21_20210103224042.parquet,
> 6842e596-46b3-4546-9faa-8a7f8c674a17-0_0-2-2_20210103224041.parquet,
> 7f0635d7-126e-40b6-9677-7fd8a123d5b9-0_3-2-5_20210103224041.parquet,
> d1906fdc-66ca-48a4-86b6-687c865d939d-0_2-9-20_20210103224042.parquet,
> fd446460-a662-434a-a6ab-1cd498af94ca-0_2-2-4_20210103224041.parquet],
> deletions=[], }
> HoodieKey { recordKey=__all_partitions__ partitionPath=files}
> HoodieMetadataPayload {key=__all_partitions__, type=1, creations=[2015/03/16,
> 2015/03/17, 2016/03/15], deletions=[], }
> Syncing [20210103224045__deltacommit__COMPLETED] to metadata table.
> Commit 20210103224045 added HoodieKey { recordKey=2016/03/15
> partitionPath=files} HoodieMetadataPayload {key=2016/03/15, type=2,
> creations=[6b8f2187-5505-40ae-845e-a71a2163d064-0_0-31-52_20210103224045.parquet],
> deletions=[], }
> HoodieKey { recordKey=2015/03/16 partitionPath=files}
> HoodieMetadataPayload {key=2015/03/16, type=2,
> creations=[25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet],
> deletions=[], }
> HoodieKey { recordKey=2015/03/17 partitionPath=files}
> HoodieMetadataPayload {key=2015/03/17, type=2,
> creations=[2ab899de-4745-43c5-9fa4-d09721d3aa91-0_2-31-54_20210103224045.parquet],
> deletions=[], }
> HoodieKey { recordKey=__all_partitions__ partitionPath=files}
> HoodieMetadataPayload {key=__all_partitions__, type=1, creations=[2015/03/16,
> 2015/03/17, 2016/03/15], deletions=[], } >>> (after compaction) State at
> 20210103224051 files
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224042.log.1_0-100-148
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_1-9-19_20210103224042.parquet
>
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_0-9-18_20210103224042.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet
>
> >>> (after delete) State at 20210103224052 files
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224042.log.1_0-100-148
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_1-9-19_20210103224042.parquet
>
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_0-9-18_20210103224042.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet
>
> >>> (after clean) State at 20210103224053 files
>
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet
>
> >>> (after update) State at 20210103224054 files
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.1_1-160-262
> .25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.1_2-160-263
>
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet
>
> >>> (after restore) State after restore files
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.1_1-160-262
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.2_1-0-1
> .25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.1_2-160-263
> .25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.2_1-0-1
>
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet
> Syncing [20210103224047__deltacommit__COMPLETED] to metadata table.
> Commit 20210103224047 added HoodieKey { recordKey=2015/03/17
> partitionPath=files} HoodieMetadataPayload {key=2015/03/17, type=2,
> creations=[.2ab899de-4745-43c5-9fa4-d09721d3aa91-0_20210103224045.log.1_2-68-104,
> .532a6f9b-ca89-4b96-84b7-0e3b13068b4b-0_20210103224042.log.1_3-68-105,
> .6842e596-46b3-4546-9faa-8a7f8c674a17-0_20210103224041.log.1_1-68-103,
> .d1906fdc-66ca-48a4-86b6-687c865d939d-0_20210103224042.log.1_0-68-102],
> deletions=[], }
> HoodieKey { recordKey=__all_partitions__ partitionPath=files}
> HoodieMetadataPayload {key=__all_partitions__, type=1,
> creations=[2015/03/17], deletions=[], }
> Syncing [20210103224049__deltacommit__COMPLETED] to metadata table.
> Commit 20210103224049 added HoodieKey { recordKey=2015/03/16
> partitionPath=files} HoodieMetadataPayload {key=2015/03/16, type=2,
> creations=[.028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224042.log.1_0-100-148],
> deletions=[], }
> HoodieKey { recordKey=2015/03/17 partitionPath=files}
> HoodieMetadataPayload {key=2015/03/17, type=2,
> creations=[.2ab899de-4745-43c5-9fa4-d09721d3aa91-0_20210103224045.log.2_5-100-153,
> .4733dbda-7824-4411-a708-4b2d978f887b-0_20210103224042.log.1_1-100-149,
> .6842e596-46b3-4546-9faa-8a7f8c674a17-0_20210103224041.log.2_3-100-151,
> .7f0635d7-126e-40b6-9677-7fd8a123d5b9-0_20210103224041.log.1_6-100-154,
> .d1906fdc-66ca-48a4-86b6-687c865d939d-0_20210103224042.log.2_2-100-150,
> .fd446460-a662-434a-a6ab-1cd498af94ca-0_20210103224041.log.1_4-100-152],
> deletions=[], }
> HoodieKey { recordKey=__all_partitions__ partitionPath=files}
> HoodieMetadataPayload {key=__all_partitions__, type=1, creations=[2015/03/16,
> 2015/03/17], deletions=[], }
> Syncing [20210103224051__commit__COMPLETED] to metadata table.
> Commit 20210103224051 added HoodieKey { recordKey=2015/03/16
> partitionPath=files} HoodieMetadataPayload {key=2015/03/16, type=2,
> creations=[028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet],
> deletions=[], }
> HoodieKey { recordKey=2015/03/17 partitionPath=files}
> HoodieMetadataPayload {key=2015/03/17, type=2,
> creations=[2ab899de-4745-43c5-9fa4-d09721d3aa91-0_0-110-167_20210103224051.parquet,
> 4733dbda-7824-4411-a708-4b2d978f887b-0_6-110-173_20210103224051.parquet,
> 532a6f9b-ca89-4b96-84b7-0e3b13068b4b-0_5-110-172_20210103224051.parquet,
> 6842e596-46b3-4546-9faa-8a7f8c674a17-0_1-110-168_20210103224051.parquet,
> 7f0635d7-126e-40b6-9677-7fd8a123d5b9-0_4-110-171_20210103224051.parquet,
> d1906fdc-66ca-48a4-86b6-687c865d939d-0_2-110-169_20210103224051.parquet,
> fd446460-a662-434a-a6ab-1cd498af94ca-0_7-110-174_20210103224051.parquet],
> deletions=[], }
> HoodieKey { recordKey=__all_partitions__ partitionPath=files}
> HoodieMetadataPayload {key=__all_partitions__, type=1, creations=[2015/03/16,
> 2015/03/17], deletions=[], }
> Syncing [20210103224053__clean__COMPLETED] to metadata table.
> Syncing [20210103224056__restore__COMPLETED] to metadata table.
> Restore Instant 20210103224056 metadata:
> [20210103224052] {2015/03/16={"partitionPath": "2015/03/16",
> "successDeleteFiles": [], "failedDeleteFiles": [], "appendFiles": {}},
> 2015/03/17={"partitionPath": "2015/03/17", "successDeleteFiles": [],
> "failedDeleteFiles": [], "appendFiles": {}}, 2016/03/15={"partitionPath":
> "2016/03/15", "successDeleteFiles": [], "failedDeleteFiles": [],
> "appendFiles": {}}}
> Restore Instant 20210103224056 metadata:
> [20210103224054] {2015/03/16={"partitionPath": "2015/03/16",
> "successDeleteFiles": [], "failedDeleteFiles": [], "appendFiles":
> {"file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/16/.028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.2_1-0-1":
> 99,
> "file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/16/.25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.2_1-0-1":
> 99}}, 2015/03/17={"partitionPath": "2015/03/17", "successDeleteFiles":
> ["file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/17/4733dbda-7824-4411-a708-4b2d978f887b-0_3-160-264_20210103224054.parquet"],
> "failedDeleteFiles": [], "appendFiles":
> {"file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/17/.532a6f9b-ca89-4b96-84b7-0e3b13068b4b-0_20210103224051.log.2_1-0-1":
> 99,
> "file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/17/.4733dbda-7824-4411-a708-4b2d978f887b-0_20210103224051.log.1_1-0-1":
> 99,
> "file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/17/.d1906fdc-66ca-48a4-86b6-687c865d939d-0_20210103224051.log.2_1-0-1":
> 99,
> "file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/17/.7f0635d7-126e-40b6-9677-7fd8a123d5b9-0_20210103224051.log.2_1-0-1":
> 99,
> "file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2015/03/17/.6842e596-46b3-4546-9faa-8a7f8c674a17-0_20210103224051.log.2_1-0-1":
> 99}}, 2016/03/15={"partitionPath": "2016/03/15", "successDeleteFiles": [],
> "failedDeleteFiles": [], "appendFiles":
> {"file:/var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/2016/03/15/.6b8f2187-5505-40ae-845e-a71a2163d064-0_20210103224045.log.2_1-0-1":
> 99}}}
> Rollback/Restore 20210103224056
> deleted :
> 2015/03/17=[4733dbda-7824-4411-a708-4b2d978f887b-0_3-160-264_20210103224054.parquet],
>
> appended :
> 2016/03/15={.6b8f2187-5505-40ae-845e-a71a2163d064-0_20210103224045.log.2_1-0-1=99}
>
> 2015/03/16={.25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.2_1-0-1=99,
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.2_1-0-1=99}
>
> 2015/03/17={.7f0635d7-126e-40b6-9677-7fd8a123d5b9-0_20210103224051.log.2_1-0-1=99,
> .d1906fdc-66ca-48a4-86b6-687c865d939d-0_20210103224051.log.2_1-0-1=99,
> .6842e596-46b3-4546-9faa-8a7f8c674a17-0_20210103224051.log.2_1-0-1=99,
> .532a6f9b-ca89-4b96-84b7-0e3b13068b4b-0_20210103224051.log.2_1-0-1=99,
> .4733dbda-7824-4411-a708-4b2d978f887b-0_20210103224051.log.1_1-0-1=99}
> >>> (after pending rollback) State at 20210103224920 files
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.1_1-160-262
> .028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_20210103224051.log.2_1-0-1
> .25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.1_2-160-263
> .25c9a174-4c07-43a1-a1a2-40454a3f0310-0_20210103224045.log.2_1-0-1
>
> 028cc15e-85ef-4b6f-b6f1-a1aa01131dbc-0_3-110-170_20210103224051.parquet
> 25c9a174-4c07-43a1-a1a2-40454a3f0310-0_1-31-53_20210103224045.parquet
>
> {code}
> This means, when the sync later runs. It will not any chance of adding the
> log file to metadata table. i.e we end up with a missed log file. Below you
> can see that at the time the sync actually runs, it does not have the
> instants to sync
> {code:java}
> vmacs:dataset vs$ ls -lrt
> /var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/.hoodie/metadata/.hoodie/
> total 40
> drwxr-xr-x 2 vs staff 64 Jan 3 22:40 archived
> -rw-r--r-- 1 vs staff 360 Jan 3 22:40 hoodie.properties
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224042.deltacommit.requested
> -rw-r--r-- 1 vs staff 982 Jan 3 22:40 20210103224042.deltacommit.inflight
> -rw-r--r-- 1 vs staff 1981 Jan 3 22:40 20210103224042.deltacommit
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224045.deltacommit.requested
> -rw-r--r-- 1 vs staff 1642 Jan 3 22:40 20210103224045.deltacommit.inflight
> -rw-r--r-- 1 vs staff 2225 Jan 3 22:40 20210103224045.deltacommit
> vmacs:dataset vs$ ls -lrt
> /var/folders/nm/pf0yxwtn5n5dftzh09zbx36h0000gn/T/junit3448725349106849265/dataset/.hoodie/
> total 224
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224041.deltacommit.requested
> -rw-r--r-- 1 vs staff 301 Jan 3 22:40 hoodie.properties
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40 20210103224041.deltacommit.inflight
> -rw-r--r-- 1 vs staff 6070 Jan 3 22:40 20210103224041.deltacommit
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224042.deltacommit.requested
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40 20210103224042.deltacommit.inflight
> -rw-r--r-- 1 vs staff 6080 Jan 3 22:40 20210103224042.deltacommit
> drwxr-xr-x 4 vs staff 128 Jan 3 22:40 metadata
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224045.deltacommit.requested
> -rw-r--r-- 1 vs staff 2143 Jan 3 22:40 20210103224045.deltacommit.inflight
> -rw-r--r-- 1 vs staff 4490 Jan 3 22:40 20210103224045.deltacommit
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224047.deltacommit.requested
> -rw-r--r-- 1 vs staff 3619 Jan 3 22:40 20210103224047.deltacommit.inflight
> -rw-r--r-- 1 vs staff 6198 Jan 3 22:40 20210103224047.deltacommit
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40
> 20210103224049.deltacommit.requested
> -rw-r--r-- 1 vs staff 6181 Jan 3 22:40 20210103224049.deltacommit.inflight
> -rw-r--r-- 1 vs staff 9651 Jan 3 22:40 20210103224049.deltacommit
> -rw-r--r-- 1 vs staff 4172 Jan 3 22:40 20210103224051.compaction.requested
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40 20210103224051.compaction.inflight
> -rw-r--r-- 1 vs staff 8700 Jan 3 22:40 20210103224051.commit
> -rw-r--r-- 1 vs staff 5134 Jan 3 22:40 20210103224053.clean.requested
> -rw-r--r-- 1 vs staff 5134 Jan 3 22:40 20210103224053.clean.inflight
> -rw-r--r-- 1 vs staff 4539 Jan 3 22:40 20210103224053.clean
> -rw-r--r-- 1 vs staff 0 Jan 3 22:40 20210103224056.restore.inflight
> -rw-r--r-- 1 vs staff 3861 Jan 3 22:40 20210103224056.restore
> vmacs:dataset vs$ {code}
> !image-2021-01-03-22-48-54-646.png!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)