From bd2fb5c3f3d1d6e75e033a7894ea39db0eead597 Mon Sep 17 00:00:00 2001 From: godyangfight Date: Wed, 9 Oct 2024 00:46:04 +0000 Subject: [PATCH] Fix transfer dest tablet do medium compaction bug. --- src/storage/compaction/ob_medium_compaction_func.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/storage/compaction/ob_medium_compaction_func.cpp b/src/storage/compaction/ob_medium_compaction_func.cpp index 882708a1f0..f8a4dc01f6 100644 --- a/src/storage/compaction/ob_medium_compaction_func.cpp +++ b/src/storage/compaction/ob_medium_compaction_func.cpp @@ -71,6 +71,7 @@ int ObMediumCompactionScheduleFunc::choose_medium_snapshot( param.merge_type_ = MEDIUM_MERGE; int64_t max_reserved_snapshot = 0; ObTablet &tablet = *tablet_handle_.get_obj(); + const int64_t transfer_start_snapshot = tablet.get_tablet_meta().transfer_info_.transfer_start_scn_.get_val_for_tx(); if (OB_FAIL(ObAdaptiveMergePolicy::get_meta_merge_tables(param, ls_, tablet, result))) { if (OB_NO_NEED_MERGE != ret) { @@ -92,6 +93,10 @@ int ObMediumCompactionScheduleFunc::choose_medium_snapshot( if (OB_FAIL(ret)) { } else if (medium_info.medium_snapshot_ <= max_sync_medium_scn) { ret = OB_NO_NEED_MERGE; + } else if (medium_info.medium_snapshot_ < transfer_start_snapshot) { + ret = OB_NO_NEED_MERGE; + LOG_INFO("medium snapshot is smaller than transfer start snapshot, no need merge", K(ret), + K(medium_info), K(transfer_start_snapshot), K(tablet)); } else if (OB_FAIL(check_frequency(max_reserved_snapshot, medium_info.medium_snapshot_))) { // check schedule interval if (OB_NO_NEED_MERGE != ret) { LOG_WARN("failed to check medium scn valid", K(ret), KPC(this));