try schedule more tablet
This commit is contained in:
@ -53,7 +53,7 @@ int ObTabletMergeChecker::check_need_merge(const ObMergeType merge_type, const O
|
|||||||
} else if (!need_merge) {
|
} else if (!need_merge) {
|
||||||
ret = OB_NO_NEED_MERGE;
|
ret = OB_NO_NEED_MERGE;
|
||||||
LOG_INFO("tablet has no need to merge", K(ret), K(ls_id), K(tablet_id),
|
LOG_INFO("tablet has no need to merge", K(ret), K(ls_id), K(tablet_id),
|
||||||
"merge_type", merge_type_to_str(merge_type));
|
"merge_type", merge_type_to_str(merge_type), K(is_empty_shell));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1148,18 +1148,20 @@ int ObTenantTabletScheduler::schedule_ls_medium_merge(
|
|||||||
} else if (OB_FAIL(ObTabletMergeChecker::check_need_merge(ObMergeType::MEDIUM_MERGE, *tablet))) {
|
} else if (OB_FAIL(ObTabletMergeChecker::check_need_merge(ObMergeType::MEDIUM_MERGE, *tablet))) {
|
||||||
if (OB_NO_NEED_MERGE != ret) {
|
if (OB_NO_NEED_MERGE != ret) {
|
||||||
LOG_WARN("failed to check need merge", K(ret));
|
LOG_WARN("failed to check need merge", K(ret));
|
||||||
|
} else {
|
||||||
|
ret = OB_SUCCESS;
|
||||||
}
|
}
|
||||||
} else if (FALSE_IT(tablet_id = tablet->get_tablet_meta().tablet_id_)) {
|
} else if (FALSE_IT(tablet_id = tablet->get_tablet_meta().tablet_id_)) {
|
||||||
} else if (tablet_id.is_special_merge_tablet()) { // data tablet
|
} else if (tablet_id.is_special_merge_tablet()) { // data tablet
|
||||||
// do nothing
|
// do nothing
|
||||||
|
} else if (OB_TMP_FAIL(tablet->fetch_table_store(table_store_wrapper))) {
|
||||||
|
LOG_WARN("fail to fetch table store", K(tmp_ret));
|
||||||
} else {
|
} else {
|
||||||
++schedule_tablet_cnt; // inc tablet cnt
|
++schedule_tablet_cnt; // inc tablet cnt
|
||||||
|
|
||||||
ObMediumCompactionScheduleFunc func(ls, tablet_handle, weak_read_ts);
|
ObMediumCompactionScheduleFunc func(ls, tablet_handle, weak_read_ts);
|
||||||
ObITable *latest_major = nullptr;
|
ObITable *latest_major = nullptr;
|
||||||
if (OB_FAIL(tablet->fetch_table_store(table_store_wrapper))) {
|
if (FALSE_IT(latest_major =
|
||||||
LOG_WARN("fail to fetch table store", K(ret));
|
|
||||||
} else if (FALSE_IT(latest_major =
|
|
||||||
table_store_wrapper.get_member()->get_major_sstables().get_boundary_table(true/*last*/))) {
|
table_store_wrapper.get_member()->get_major_sstables().get_boundary_table(true/*last*/))) {
|
||||||
} else if (OB_NOT_NULL(latest_major) && latest_major->get_snapshot_version() >= merge_version) {
|
} else if (OB_NOT_NULL(latest_major) && latest_major->get_snapshot_version() >= merge_version) {
|
||||||
tablet_merge_finish = true;
|
tablet_merge_finish = true;
|
||||||
@ -1173,6 +1175,8 @@ int ObTenantTabletScheduler::schedule_ls_medium_merge(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (OB_SUCCESS != tmp_ret) {
|
||||||
|
} else {
|
||||||
ObArenaAllocator allocator;
|
ObArenaAllocator allocator;
|
||||||
const compaction::ObMediumCompactionInfoList *medium_list = nullptr;
|
const compaction::ObMediumCompactionInfoList *medium_list = nullptr;
|
||||||
LOG_DEBUG("schedule tablet medium", K(ret), K(ls_id), K(tablet_id), K(tablet_merge_finish),
|
LOG_DEBUG("schedule tablet medium", K(ret), K(ls_id), K(tablet_id), K(tablet_merge_finish),
|
||||||
@ -1183,8 +1187,8 @@ int ObTenantTabletScheduler::schedule_ls_medium_merge(
|
|||||||
if (!is_leader || OB_ISNULL(latest_major)) {
|
if (!is_leader || OB_ISNULL(latest_major)) {
|
||||||
// follower or no major: do nothing
|
// follower or no major: do nothing
|
||||||
could_schedule_next_medium = false;
|
could_schedule_next_medium = false;
|
||||||
} else if (OB_FAIL(tablet_handle.get_obj()->read_medium_info_list(allocator, medium_list))) {
|
} else if (OB_TMP_FAIL(tablet_handle.get_obj()->read_medium_info_list(allocator, medium_list))) {
|
||||||
LOG_WARN("failed to read medium info list", K(ret), K(tablet_id));
|
LOG_WARN("failed to read medium info list", K(tmp_ret), K(tablet_id));
|
||||||
} else if (medium_list->need_check_finish()) { // need check finished
|
} else if (medium_list->need_check_finish()) { // need check finished
|
||||||
if (OB_TMP_FAIL(func.check_medium_finish(ls_locality))) {
|
if (OB_TMP_FAIL(func.check_medium_finish(ls_locality))) {
|
||||||
LOG_WARN("failed to check medium finish", K(tmp_ret), K(ls_id), K(tablet_id));
|
LOG_WARN("failed to check medium finish", K(tmp_ret), K(ls_id), K(tablet_id));
|
||||||
@ -1225,6 +1229,7 @@ int ObTenantTabletScheduler::schedule_ls_medium_merge(
|
|||||||
}
|
}
|
||||||
medium_ls_tablet_iter_.update_merge_finish(tablet_merge_finish);
|
medium_ls_tablet_iter_.update_merge_finish(tablet_merge_finish);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} // end of while
|
} // end of while
|
||||||
} // end of RLock allow_schedule_medium_lock_
|
} // end of RLock allow_schedule_medium_lock_
|
||||||
} // else
|
} // else
|
||||||
|
|||||||
Reference in New Issue
Block a user