Wait till data_checkpoint starts freeze_task successfully
This commit is contained in:
parent
6008fdb2a5
commit
92212a2dba
@ -497,14 +497,12 @@ int ObFreezer::inner_logstream_freeze(ObFuture<int> *result)
|
||||
share::ObLSID ls_id = get_ls_id();
|
||||
ObTableHandleV2 handle;
|
||||
|
||||
if (OB_FAIL(get_ls_data_checkpoint()->ls_freeze(SCN::max_scn()))) {
|
||||
// move memtables from active_list to frozen_list
|
||||
TRANS_LOG(WARN, "[Freezer] data_checkpoint freeze failed", K(ret), K(ls_id));
|
||||
stat_.add_diagnose_info("data_checkpoint freeze failed");
|
||||
if (FALSE_IT(submit_checkpoint_task())) {
|
||||
} else if (FALSE_IT(submit_log_for_freeze())) {
|
||||
} else if (OB_FAIL(submit_freeze_task(true/*is_ls_freeze*/, result, handle))) {
|
||||
TRANS_LOG(WARN, "failed to submit ls_freeze task", K(ret), K(ls_id));
|
||||
TRANS_LOG(ERROR, "failed to submit ls_freeze task", K(ret), K(ls_id));
|
||||
stat_.add_diagnose_info("fail to submit ls_freeze_task");
|
||||
ob_abort();
|
||||
} else {
|
||||
TRANS_LOG(INFO, "[Freezer] succeed to start ls_freeze_task", K(ret), K(ls_id));
|
||||
}
|
||||
@ -512,6 +510,19 @@ int ObFreezer::inner_logstream_freeze(ObFuture<int> *result)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObFreezer::submit_checkpoint_task()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
do {
|
||||
if (OB_FAIL(get_ls_data_checkpoint()->ls_freeze(SCN::max_scn()))) {
|
||||
TRANS_LOG(WARN, "[Freezer] data_checkpoint freeze failed", K(ret), K(ls_id));
|
||||
stat_.add_diagnose_info("data_checkpoint freeze failed");
|
||||
ob_usleep(100);
|
||||
}
|
||||
} while (OB_FAIL(ret));
|
||||
}
|
||||
|
||||
int ObFreezer::ls_freeze_task()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
@ -307,6 +307,7 @@ private:
|
||||
int check_ls_state(); // must be used under the protection of ls_lock
|
||||
int freeze_normal_tablet_(const ObTabletID &tablet_id, ObFuture<int> *result = nullptr);
|
||||
int freeze_ls_inner_tablet_(const ObTabletID &tablet_id);
|
||||
void submit_checkpoint_task();
|
||||
private:
|
||||
// flag whether the logsteram is freezing
|
||||
// the first bit: 1, freeze; 0, not freeze
|
||||
|
Loading…
x
Reference in New Issue
Block a user