apache / paimon

Apache Paimon is a lake format that enables building a Realtime Lakehouse Architecture with Flink and Spark for both streaming and batch operations.
https://paimon.apache.org/
Apache License 2.0
2.12k stars 839 forks source link

[Bug] CdcRecordUtils does not handle empty field in bucket keys correctly #3570

Closed nonggialiang closed 1 week ago

nonggialiang commented 1 week ago

Search before asking

Paimon version

0.8.0

Compute Engine

flink 1.17.1

Minimal reproduce step

Use paimon cdc to sync data from a database source table ,which has empty string in primary key fields (and bucket key fields), and sink to a paimon table with more than 1 bucket. Setting flink writer parallelism greater than 1. After a compaction is triggered, the commit will failed with execption:

2024-06-19 16:14:56
java.lang.RuntimeException: File deletion conflicts detected! Give up committing.

Don't panic!
Conflicts during commits are normal and this failure is intended to resolve the conflicts.
Conflicts are mainly caused by the following scenarios:
1. Your job is suffering from back-pressuring.
   There are too many snapshots waiting to be committed and an exception occurred during the commit procedure (most probably due to checkpoint timeout).
   See https://paimon.apache.org/docs/master/maintenance/write-performance/ for how to improve writing performance.
2. Multiple jobs are writing into the same partition at the same time, or you use STATEMENT SET to execute multiple INSERT statements into the same Paimon table.
   You'll probably see different base commit user and current commit user below.
   You can use https://paimon.apache.org/docs/master/maintenance/dedicated-compaction#dedicated-compaction-job to support multiple writing.
3. You're recovering from an old savepoint, or you're creating multiple jobs from a savepoint.
   The job will fail continuously in this scenario to protect metadata from corruption.
   You can either recover from the latest savepoint, or you can revert the table to the snapshot corresponding to the old savepoint.

Base commit user is: 8e678b6b-c8e8-4549-b8e8-206ed833ee62; Current commit user is: 8e678b6b-c8e8-4549-b8e8-206ed833ee62

Base entries are:
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=5, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-32.orc', minKey=org.apache.paimon.data.BinaryRow@4c42ebdc, maxKey=org.apache.paimon.data.BinaryRow@e30efada}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=4, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-52.orc', minKey=org.apache.paimon.data.BinaryRow@8c523b1e, maxKey=org.apache.paimon.data.BinaryRow@ed12311a}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=3, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-61.orc', minKey=org.apache.paimon.data.BinaryRow@3dd4946, maxKey=org.apache.paimon.data.BinaryRow@26a4547a}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=5, fileName='data-9e6a6c94-c455-4b35-b151-1d95ecd3c79a-65.orc', minKey=org.apache.paimon.data.BinaryRow@2eef3fbf, maxKey=org.apache.paimon.data.BinaryRow@3b159d}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=4, fileName='data-9e6a6c94-c455-4b35-b151-1d95ecd3c79a-74.orc', minKey=org.apache.paimon.data.BinaryRow@c0bcdc6b, maxKey=org.apache.paimon.data.BinaryRow@9f987567}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=2, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-74.orc', minKey=org.apache.paimon.data.BinaryRow@5bedc9b2, maxKey=org.apache.paimon.data.BinaryRow@2f4a0294}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=3, fileName='data-9e6a6c94-c455-4b35-b151-1d95ecd3c79a-77.orc', minKey=org.apache.paimon.data.BinaryRow@5e085377, maxKey=org.apache.paimon.data.BinaryRow@db0de929}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-e6342da5-5839-4535-adc3-8b47455c651c-55.orc', minKey=org.apache.paimon.data.BinaryRow@e2317762, maxKey=org.apache.paimon.data.BinaryRow@c49ba646}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-b727990d-c757-4faa-bba9-68e8a0f6035f-55.orc', minKey=org.apache.paimon.data.BinaryRow@74d62263, maxKey=org.apache.paimon.data.BinaryRow@92840957}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=1, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-77.orc', minKey=org.apache.paimon.data.BinaryRow@1b2551c2, maxKey=org.apache.paimon.data.BinaryRow@d110c206}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=2, fileName='data-b727990d-c757-4faa-bba9-68e8a0f6035f-54.orc', minKey=org.apache.paimon.data.BinaryRow@9cb81935, maxKey=org.apache.paimon.data.BinaryRow@c044dd3b}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-5d4d8a75-e2a8-4781-b05a-12dab8ee0ebf-0.orc', minKey=org.apache.paimon.data.BinaryRow@c902d5bc, maxKey=org.apache.paimon.data.BinaryRow@e0e1e8ee}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-4ddf6f9a-570b-455a-a11a-b7ab6570a7c0-0.orc', minKey=org.apache.paimon.data.BinaryRow@4212bdbb, maxKey=org.apache.paimon.data.BinaryRow@98af9d9b}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-96087431-52ba-4adf-9828-e00f8f287680-0.orc', minKey=org.apache.paimon.data.BinaryRow@c5372790, maxKey=org.apache.paimon.data.BinaryRow@6eb00888}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-f8fbddf3-3914-41cf-988f-cdac5d19e357-0.orc', minKey=org.apache.paimon.data.BinaryRow@cad61e33, maxKey=org.apache.paimon.data.BinaryRow@dabe04cd}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6f4ec123-f7f5-4522-ab35-69d5b1ca1f65-0.orc', minKey=org.apache.paimon.data.BinaryRow@e2a9cbfe, maxKey=org.apache.paimon.data.BinaryRow@6bc6efee}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-e404b2f1-94f5-497f-8e8c-a941c299e8ac-0.orc', minKey=org.apache.paimon.data.BinaryRow@1c88f51b, maxKey=org.apache.paimon.data.BinaryRow@ab2d3f7f}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-508c65fb-ed92-4dc7-ac50-6e694a73f0d3-0.orc', minKey=org.apache.paimon.data.BinaryRow@311fb49a, maxKey=org.apache.paimon.data.BinaryRow@d6107cac}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-1061f911-0be8-4a12-a8df-63ed42a7e9b7-0.orc', minKey=org.apache.paimon.data.BinaryRow@b9614be9, maxKey=org.apache.paimon.data.BinaryRow@df85db13}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-508c65fb-ed92-4dc7-ac50-6e694a73f0d3-1.orc', minKey=org.apache.paimon.data.BinaryRow@a5b2997e, maxKey=org.apache.paimon.data.BinaryRow@a07926d8}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-1061f911-0be8-4a12-a8df-63ed42a7e9b7-1.orc', minKey=org.apache.paimon.data.BinaryRow@f1b18f4d, maxKey=org.apache.paimon.data.BinaryRow@ea855335}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6f4ec123-f7f5-4522-ab35-69d5b1ca1f65-1.orc', minKey=org.apache.paimon.data.BinaryRow@3eb71346, maxKey=org.apache.paimon.data.BinaryRow@a91c94a}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-e404b2f1-94f5-497f-8e8c-a941c299e8ac-1.orc', minKey=org.apache.paimon.data.BinaryRow@94473d1, maxKey=org.apache.paimon.data.BinaryRow@f7d624d7}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-fe6549c7-896f-401c-a322-4a6babb806df-0.orc', minKey=org.apache.paimon.data.BinaryRow@36f1fdd0, maxKey=org.apache.paimon.data.BinaryRow@b8a52902}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-915dbb67-386d-4147-b547-2ca9a9dbe6b8-0.orc', minKey=org.apache.paimon.data.BinaryRow@7f99093f, maxKey=org.apache.paimon.data.BinaryRow@25616543}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-2217b2c5-e80a-4430-b483-a7f42a9dc3ec-0.orc', minKey=org.apache.paimon.data.BinaryRow@678dee70, maxKey=org.apache.paimon.data.BinaryRow@4cdd3026}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-dddf5ce4-640f-46be-b343-92b92f1aa861-0.orc', minKey=org.apache.paimon.data.BinaryRow@5ff0b2d9, maxKey=org.apache.paimon.data.BinaryRow@3c8af23}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-138a87f0-cbe5-489d-8a43-3907dc906022-0.orc', minKey=org.apache.paimon.data.BinaryRow@9bd894d4, maxKey=org.apache.paimon.data.BinaryRow@ac6a3dd4}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-9f112577-4e73-4977-832f-684a7d2085d8-0.orc', minKey=org.apache.paimon.data.BinaryRow@98f198f3, maxKey=org.apache.paimon.data.BinaryRow@b046f523}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-05f514d8-5e74-4a74-9138-cc48d51bd655-0.orc', minKey=org.apache.paimon.data.BinaryRow@8d59e344, maxKey=org.apache.paimon.data.BinaryRow@98281ada}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-a79059ab-7941-464b-9dcc-84489b3c9009-0.orc', minKey=org.apache.paimon.data.BinaryRow@c873b7e5, maxKey=org.apache.paimon.data.BinaryRow@ae339b55}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-8b48efdc-41ec-4786-9149-5b801167ac9b-0.orc', minKey=org.apache.paimon.data.BinaryRow@9bcbb526, maxKey=org.apache.paimon.data.BinaryRow@4d79be10}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-775cb60e-76d5-4f70-9827-f54ba3c1c212-0.orc', minKey=org.apache.paimon.data.BinaryRow@127cf451, maxKey=org.apache.paimon.data.BinaryRow@7141f7b5}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-f2996446-9c93-4f39-9f5f-1b5e9826955b-0.orc', minKey=org.apache.paimon.data.BinaryRow@a365ae, maxKey=org.apache.paimon.data.BinaryRow@ec2c12b4}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-5ea6d0cf-32eb-4482-9b6a-604b97bdfe9f-0.orc', minKey=org.apache.paimon.data.BinaryRow@938ed3f9, maxKey=org.apache.paimon.data.BinaryRow@80611d}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-06a906d1-2500-4979-aaab-50df87c9f606-0.orc', minKey=org.apache.paimon.data.BinaryRow@4b3dadf4, maxKey=org.apache.paimon.data.BinaryRow@7a096d5e}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-177ec58b-2ec5-4b54-8a9f-2b74dd3a28e3-0.orc', minKey=org.apache.paimon.data.BinaryRow@7ca48837, maxKey=org.apache.paimon.data.BinaryRow@496a6ac3}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-03142d87-c655-4f63-add7-a403d52ffd25-0.orc', minKey=org.apache.paimon.data.BinaryRow@389ddadc, maxKey=org.apache.paimon.data.BinaryRow@582a83f0}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-a763e7ed-8fbb-4513-b522-60caa00ed0f9-0.orc', minKey=org.apache.paimon.data.BinaryRow@dd41cef3, maxKey=org.apache.paimon.data.BinaryRow@3c46abb9}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-3594d6d4-e73b-49f3-ab32-158caca0eab7-0.orc', minKey=org.apache.paimon.data.BinaryRow@db69542e, maxKey=org.apache.paimon.data.BinaryRow@e53c0814}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-561de608-f1f3-4e6b-9cbe-54e42b4f7422-0.orc', minKey=org.apache.paimon.data.BinaryRow@cdf4d083, maxKey=org.apache.paimon.data.BinaryRow@4fe40e95}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-d5aa85ce-7c85-40b9-96e5-0e0d19cf886c-0.orc', minKey=org.apache.paimon.data.BinaryRow@d6bc0892, maxKey=org.apache.paimon.data.BinaryRow@c8467ba6}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-bbded771-0b7f-4ec7-a011-ea70dd3a01ab-0.orc', minKey=org.apache.paimon.data.BinaryRow@17bbf4e5, maxKey=org.apache.paimon.data.BinaryRow@340c1703}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-4a81f159-f86c-4470-a53b-1881004b0db9-0.orc', minKey=org.apache.paimon.data.BinaryRow@21e843c0, maxKey=org.apache.paimon.data.BinaryRow@e9511bf6}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-bbc00832-79d3-4d68-b348-4bf13a3704a2-0.orc', minKey=org.apache.paimon.data.BinaryRow@e30127a3, maxKey=org.apache.paimon.data.BinaryRow@43b5891b}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-184712fa-af9e-4fae-b592-5ac0959fec2e-0.orc', minKey=org.apache.paimon.data.BinaryRow@89b26dc8, maxKey=org.apache.paimon.data.BinaryRow@19db0c4e}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-ab0f328b-cafe-416a-826b-a7e948396be6-0.orc', minKey=org.apache.paimon.data.BinaryRow@51b043c3, maxKey=org.apache.paimon.data.BinaryRow@4212325}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-91db1dd1-c9f9-4eeb-b6ac-578230cdad54-0.orc', minKey=org.apache.paimon.data.BinaryRow@cf6bebc6, maxKey=org.apache.paimon.data.BinaryRow@14e39100}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=1, level=0, fileName='data-e08efe92-4bad-4507-8547-351a5bbd18e4-0.orc', minKey=org.apache.paimon.data.BinaryRow@f6b883b5, maxKey=org.apache.paimon.data.BinaryRow@c22228c3}
{kind=ADD, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-f184561c-3bed-4b15-b057-fe4f4bb1acbb-0.orc', minKey=org.apache.paimon.data.BinaryRow@ccc37a3c, maxKey=org.apache.paimon.data.BinaryRow@8e21a432}

Changes are:
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=5, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-32.orc', minKey=org.apache.paimon.data.BinaryRow@4c42ebdc, maxKey=org.apache.paimon.data.BinaryRow@e30efada}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=4, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-52.orc', minKey=org.apache.paimon.data.BinaryRow@8c523b1e, maxKey=org.apache.paimon.data.BinaryRow@ed12311a}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=3, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-61.orc', minKey=org.apache.paimon.data.BinaryRow@3dd4946, maxKey=org.apache.paimon.data.BinaryRow@26a4547a}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=2, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-74.orc', minKey=org.apache.paimon.data.BinaryRow@5bedc9b2, maxKey=org.apache.paimon.data.BinaryRow@2f4a0294}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=1, fileName='data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-77.orc', minKey=org.apache.paimon.data.BinaryRow@1b2551c2, maxKey=org.apache.paimon.data.BinaryRow@d110c206}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-e6342da5-5839-4535-adc3-8b47455c651c-55.orc', minKey=org.apache.paimon.data.BinaryRow@e2317762, maxKey=org.apache.paimon.data.BinaryRow@c49ba646}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6f4ec123-f7f5-4522-ab35-69d5b1ca1f65-0.orc', minKey=org.apache.paimon.data.BinaryRow@e2a9cbfe, maxKey=org.apache.paimon.data.BinaryRow@6bc6efee}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-2217b2c5-e80a-4430-b483-a7f42a9dc3ec-0.orc', minKey=org.apache.paimon.data.BinaryRow@678dee70, maxKey=org.apache.paimon.data.BinaryRow@4cdd3026}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-8b48efdc-41ec-4786-9149-5b801167ac9b-0.orc', minKey=org.apache.paimon.data.BinaryRow@9bcbb526, maxKey=org.apache.paimon.data.BinaryRow@4d79be10}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-3594d6d4-e73b-49f3-ab32-158caca0eab7-0.orc', minKey=org.apache.paimon.data.BinaryRow@db69542e, maxKey=org.apache.paimon.data.BinaryRow@e53c0814}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-5d4d8a75-e2a8-4781-b05a-12dab8ee0ebf-0.orc', minKey=org.apache.paimon.data.BinaryRow@c902d5bc, maxKey=org.apache.paimon.data.BinaryRow@e0e1e8ee}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6f4ec123-f7f5-4522-ab35-69d5b1ca1f65-1.orc', minKey=org.apache.paimon.data.BinaryRow@3eb71346, maxKey=org.apache.paimon.data.BinaryRow@a91c94a}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-05f514d8-5e74-4a74-9138-cc48d51bd655-0.orc', minKey=org.apache.paimon.data.BinaryRow@8d59e344, maxKey=org.apache.paimon.data.BinaryRow@98281ada}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-03142d87-c655-4f63-add7-a403d52ffd25-0.orc', minKey=org.apache.paimon.data.BinaryRow@389ddadc, maxKey=org.apache.paimon.data.BinaryRow@582a83f0}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-184712fa-af9e-4fae-b592-5ac0959fec2e-0.orc', minKey=org.apache.paimon.data.BinaryRow@89b26dc8, maxKey=org.apache.paimon.data.BinaryRow@19db0c4e}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-508c65fb-ed92-4dc7-ac50-6e694a73f0d3-0.orc', minKey=org.apache.paimon.data.BinaryRow@311fb49a, maxKey=org.apache.paimon.data.BinaryRow@d6107cac}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-fe6549c7-896f-401c-a322-4a6babb806df-0.orc', minKey=org.apache.paimon.data.BinaryRow@36f1fdd0, maxKey=org.apache.paimon.data.BinaryRow@b8a52902}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-f2996446-9c93-4f39-9f5f-1b5e9826955b-0.orc', minKey=org.apache.paimon.data.BinaryRow@a365ae, maxKey=org.apache.paimon.data.BinaryRow@ec2c12b4}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-d5aa85ce-7c85-40b9-96e5-0e0d19cf886c-0.orc', minKey=org.apache.paimon.data.BinaryRow@d6bc0892, maxKey=org.apache.paimon.data.BinaryRow@c8467ba6}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-96087431-52ba-4adf-9828-e00f8f287680-0.orc', minKey=org.apache.paimon.data.BinaryRow@c5372790, maxKey=org.apache.paimon.data.BinaryRow@6eb00888}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-508c65fb-ed92-4dc7-ac50-6e694a73f0d3-1.orc', minKey=org.apache.paimon.data.BinaryRow@a5b2997e, maxKey=org.apache.paimon.data.BinaryRow@a07926d8}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-138a87f0-cbe5-489d-8a43-3907dc906022-0.orc', minKey=org.apache.paimon.data.BinaryRow@9bd894d4, maxKey=org.apache.paimon.data.BinaryRow@ac6a3dd4}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-06a906d1-2500-4979-aaab-50df87c9f606-0.orc', minKey=org.apache.paimon.data.BinaryRow@4b3dadf4, maxKey=org.apache.paimon.data.BinaryRow@7a096d5e}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-4a81f159-f86c-4470-a53b-1881004b0db9-0.orc', minKey=org.apache.paimon.data.BinaryRow@21e843c0, maxKey=org.apache.paimon.data.BinaryRow@e9511bf6}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-f184561c-3bed-4b15-b057-fe4f4bb1acbb-0.orc', minKey=org.apache.paimon.data.BinaryRow@ccc37a3c, maxKey=org.apache.paimon.data.BinaryRow@8e21a432}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-91db1dd1-c9f9-4eeb-b6ac-578230cdad54-0.orc', minKey=org.apache.paimon.data.BinaryRow@cf6bebc6, maxKey=org.apache.paimon.data.BinaryRow@14e39100}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-68c2063c-d40b-4125-8d7a-ad3d08a6435c-0.orc', minKey=org.apache.paimon.data.BinaryRow@1273d792, maxKey=org.apache.paimon.data.BinaryRow@18f1a012}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-11adaed9-407b-49d5-8855-9640b4248928-0.orc', minKey=org.apache.paimon.data.BinaryRow@b64044fc, maxKey=org.apache.paimon.data.BinaryRow@62d01f0}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-a3cfcd7b-1258-4185-b53f-3129372cd45c-0.orc', minKey=org.apache.paimon.data.BinaryRow@1fbd526, maxKey=org.apache.paimon.data.BinaryRow@435e5514}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-08548ced-2564-4e56-8206-2db79ad57816-0.orc', minKey=org.apache.paimon.data.BinaryRow@788f61d6, maxKey=org.apache.paimon.data.BinaryRow@4df2ba14}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-5081d69c-0906-47f9-9441-387ad54ce8d0-0.orc', minKey=org.apache.paimon.data.BinaryRow@8534e77c, maxKey=org.apache.paimon.data.BinaryRow@5307814a}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-be164e6d-c51c-4dcc-89c7-3171b07c9706-0.orc', minKey=org.apache.paimon.data.BinaryRow@815782aa, maxKey=org.apache.paimon.data.BinaryRow@2f8b5fb6}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-cbe2d2a0-d9fa-4cd4-b8d5-0c74c955de59-0.orc', minKey=org.apache.paimon.data.BinaryRow@9ab07048, maxKey=org.apache.paimon.data.BinaryRow@a7341722}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6b372673-c740-48b9-9f3e-b9cbbf054970-0.orc', minKey=org.apache.paimon.data.BinaryRow@fa28176, maxKey=org.apache.paimon.data.BinaryRow@6e5ccf08}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-a56a09fb-65b6-4755-84b1-a58b6ec2eb95-0.orc', minKey=org.apache.paimon.data.BinaryRow@2f3c1970, maxKey=org.apache.paimon.data.BinaryRow@e775e9cc}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6b0b4e8c-4ffb-4f36-8ce0-dbfe60918fbe-0.orc', minKey=org.apache.paimon.data.BinaryRow@71b06db2, maxKey=org.apache.paimon.data.BinaryRow@865007da}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-4183756d-3bf2-4af3-abd7-61562e7cbc26-0.orc', minKey=org.apache.paimon.data.BinaryRow@6272882c, maxKey=org.apache.paimon.data.BinaryRow@d42fecc2}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-c7bf18a3-67a7-4608-ab1e-1414cf2a6bf2-0.orc', minKey=org.apache.paimon.data.BinaryRow@bbc695fa, maxKey=org.apache.paimon.data.BinaryRow@1005038}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-5aff1c9e-5a5f-4c71-a695-1eac038ba8a4-0.orc', minKey=org.apache.paimon.data.BinaryRow@3c4c36b0, maxKey=org.apache.paimon.data.BinaryRow@3ad95e20}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-11db32d9-b594-450c-8c67-7949f175e988-0.orc', minKey=org.apache.paimon.data.BinaryRow@a31e7e52, maxKey=org.apache.paimon.data.BinaryRow@f2864a64}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-94cd7be2-f8ea-4488-bda3-a2d3a40b3694-0.orc', minKey=org.apache.paimon.data.BinaryRow@b4238b9a, maxKey=org.apache.paimon.data.BinaryRow@fe9158e}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-77784bfc-dc19-4381-80c7-de147ca766c9-0.orc', minKey=org.apache.paimon.data.BinaryRow@2c499082, maxKey=org.apache.paimon.data.BinaryRow@899ddfd4}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-591ce942-b347-4602-90f1-6932e77c8e38-0.orc', minKey=org.apache.paimon.data.BinaryRow@bb729124, maxKey=org.apache.paimon.data.BinaryRow@4a6e0f1e}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-c4b86c97-5781-4f07-98ae-861135b7a54d-0.orc', minKey=org.apache.paimon.data.BinaryRow@c4804238, maxKey=org.apache.paimon.data.BinaryRow@2f6bde4a}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-b29b9e23-5352-4ce1-b30b-f1bdd6e68915-0.orc', minKey=org.apache.paimon.data.BinaryRow@a7f55340, maxKey=org.apache.paimon.data.BinaryRow@769bff06}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-7d636bdb-632e-43dd-821a-7be7f5885e86-0.orc', minKey=org.apache.paimon.data.BinaryRow@18765e54, maxKey=org.apache.paimon.data.BinaryRow@dc4ed278}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-6b0f2ab3-1cec-431c-9edf-7c45dfc3f812-0.orc', minKey=org.apache.paimon.data.BinaryRow@c8403704, maxKey=org.apache.paimon.data.BinaryRow@8026c7c}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-d9c2d5fd-716d-4ac1-b366-b56ef078fffb-0.orc', minKey=org.apache.paimon.data.BinaryRow@4810e7fe, maxKey=org.apache.paimon.data.BinaryRow@dfa7ccbc}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-1a82e7c0-5b09-407a-a8a5-462f67bd2463-0.orc', minKey=org.apache.paimon.data.BinaryRow@f09d5700, maxKey=org.apache.paimon.data.BinaryRow@5412d5f2}
{kind=DELETE, partition=org.apache.paimon.data.BinaryRow@e6d4e859, bucket=0, level=0, fileName='data-5665247c-3140-45ae-90f5-d5e1716a11c5-0.orc', minKey=org.apache.paimon.data.BinaryRow@7ba77ae4, maxKey=org.apache.paimon.data.BinaryRow@c04ab1de}

The entry list above are not fully displayed, please refer to taskmanager.log for more information.
    at org.apache.paimon.operation.FileStoreCommitImpl.createConflictException(FileStoreCommitImpl.java:1138)
    at org.apache.paimon.operation.FileStoreCommitImpl.noConflictsOrFail(FileStoreCommitImpl.java:1010)
    at org.apache.paimon.operation.FileStoreCommitImpl.noConflictsOrFail(FileStoreCommitImpl.java:990)
    at org.apache.paimon.operation.FileStoreCommitImpl.tryCommitOnce(FileStoreCommitImpl.java:773)
    at org.apache.paimon.operation.FileStoreCommitImpl.tryCommit(FileStoreCommitImpl.java:659)
    at org.apache.paimon.operation.FileStoreCommitImpl.commit(FileStoreCommitImpl.java:302)
    at org.apache.paimon.table.sink.TableCommitImpl.commitMultiple(TableCommitImpl.java:206)
    at org.apache.paimon.flink.sink.StoreCommitter.commit(StoreCommitter.java:100)
    at org.apache.paimon.flink.sink.StoreMultiCommitter.commit(StoreMultiCommitter.java:146)
    at org.apache.paimon.flink.sink.CommitterOperator.commitUpToCheckpoint(CommitterOperator.java:171)
    at org.apache.paimon.flink.sink.CommitterOperator.notifyCheckpointComplete(CommitterOperator.java:164)
    at org.apache.flink.streaming.runtime.tasks.StreamOperatorWrapper.notifyCheckpointComplete(StreamOperatorWrapper.java:104)
    at org.apache.flink.streaming.runtime.tasks.RegularOperatorChain.notifyCheckpointComplete(RegularOperatorChain.java:145)
    at org.apache.flink.streaming.runtime.tasks.SubtaskCheckpointCoordinatorImpl.notifyCheckpoint(SubtaskCheckpointCoordinatorImpl.java:467)
    at org.apache.flink.streaming.runtime.tasks.SubtaskCheckpointCoordinatorImpl.notifyCheckpointComplete(SubtaskCheckpointCoordinatorImpl.java:400)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.notifyCheckpointComplete(StreamTask.java:1430)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$notifyCheckpointCompleteAsync$16(StreamTask.java:1371)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$notifyCheckpointOperation$19(StreamTask.java:1410)
    at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:50)
    at org.apache.flink.streaming.runtime.tasks.mailbox.Mail.run(Mail.java:90)
    at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMail(MailboxProcessor.java:398)
    at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMailsWhenDefaultActionUnavailable(MailboxProcessor.java:367)
    at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMail(MailboxProcessor.java:352)
    at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:229)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:839)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:788)
    at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:952)
    at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:931)
    at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:745)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:562)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Trying to delete file data-ab0f9e1d-903c-455d-be55-d0e310bc33bf-32.orc which is not previously added.
    at org.apache.paimon.utils.Preconditions.checkState(Preconditions.java:204)
    at org.apache.paimon.manifest.FileEntry.assertNoDelete(FileEntry.java:181)
    at org.apache.paimon.operation.FileStoreCommitImpl.noConflictsOrFail(FileStoreCommitImpl.java:1007)
    ... 29 more

What doesn't meet your expectations?

Compactions should be committed successfully.

Anything else?

The cause is from CdcRecordUtils.projectAsInsert(), where empty (but not null) string field will be mistakenly set to null in the output GenericRow , which will cause the CdcRecordKeyAndBucketExtractor.bucket() to return a wrong bucket slot number. Because empty string and null string is different. When downstream writer operator treats the empty string correctly, the mismatch between the upstream and downstream will result in more than one subtask writing/compacting the same paimon bucket, here comes the conflict.

Are you willing to submit a PR?