Skip to content

Commit f7b77e5

Browse files
authored
[Fix](cloud-mow) Fix dup key problem due to calculating delete bitmaps for incremental rowsets based on wrong historical rowsets during SC (#49350)
### What problem does this PR solve? When calculating delete bitmaps for incremental rowsets during schema change double write phase, `sync_rowsets` on tmp_tablet may override local converted historical rowsets with rowsets on new tablet. But these rowsets will be removed when commit sc job. This PR re-add converted rowsets after `sync_rowsets` to avoid the problem
1 parent 9308401 commit f7b77e5

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

be/src/cloud/cloud_schema_change_job.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,10 @@ Status CloudSchemaChangeJob::_process_delete_bitmap(int64_t alter_version,
466466
{start_calc_delete_bitmap_version, max_version}, &incremental_rowsets));
467467
DBUG_EXECUTE_IF("CloudSchemaChangeJob::_process_delete_bitmap.after.capture_without_lock",
468468
DBUG_BLOCK);
469+
{
470+
std::unique_lock wlock(tmp_tablet->get_header_lock());
471+
tmp_tablet->add_rowsets(_output_rowsets, true, wlock);
472+
}
469473
for (auto rowset : incremental_rowsets) {
470474
RETURN_IF_ERROR(CloudTablet::update_delete_bitmap_without_lock(tmp_tablet, rowset));
471475
}

0 commit comments

Comments
 (0)