[
https://issues.apache.org/jira/browse/KUDU-3619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexey Serbin resolved KUDU-3619.
---------------------------------
Fix Version/s: 1.18.0
1.17.1
Resolution: Fixed
> The 'supplement to GC algorithm' breaks major delta compaction
> --------------------------------------------------------------
>
> Key: KUDU-3619
> URL: https://issues.apache.org/jira/browse/KUDU-3619
> Project: Kudu
> Issue Type: Bug
> Components: compaction, tserver
> Affects Versions: 1.17.0
> Reporter: Alexey Serbin
> Priority: Major
> Fix For: 1.18.0, 1.17.1
>
>
> With the functionality introduced with
> [ad920e69f|https://github.com/apache/kudu/commit/ad920e69fcd67ceefa25ea81a38a10a27d9e3afc]
> doesn't handle the appearance of an empty rowset as the result of major
> delta compaction scheduled, and that leads to errors like below once it's run
> its course:
> {noformat}
> W20240906 10:59:01.768857 189660 tablet_mm_ops.cc:364] T
> 64144a1d4b864aa080e6cc53056546a5 P 574954b3b13a415c83a1660e7f51ee4e: Major
> delta compaction failed on 64144a1d4b864aa080e6cc53056546a5: Corruption:
> Failed major delta compaction on RowSet(1675): No min key found: CFile base
> data in RowSet(1675)
> {noformat}
> Similarly, the {{mt-tablet-test}} is sporadically failing due to the same
> issue when the test workload happens to create similar situation with
> all-the-rows-deleted rowsets:
> {noformat}
> MultiThreadedHybridClockTabletTest/5.UpdateNoMergeCompaction:
> src/kudu/tablet/mt-tablet-test.cc:489: Failure
> Failed
> Bad status: Corruption: Failed major delta compaction on RowSet(1): No min
> key found: CFile base data in RowSet(1)
> {noformat}
> There is a simple test scenario that triggers the issue:
> [https://gerrit.cloudera.org/#/c/21809/|https://gerrit.cloudera.org/#/c/21809/].
> As a workaround, it's possible to set the
> {{\-\-all_delete_op_delta_file_cnt_for_compaction}} to a very high value,
> e.g. 1000000.
> To address the issue properly, it's necessary to update the major delta
> compaction code to handle situations where the result rowset is completely
> empty. In theory, swapping out the result rowset with an empty one should be
> enough: for example, see how it's done in [changelist
> 705954872|https://github.com/apache/kudu/commit/705954872dc86238556456abed0a879bb1462e51].
--
This message was sent by Atlassian Jira
(v8.20.10#820010)