Fix rebuild some bugs
This commit is contained in:
parent
a8e878a7bc
commit
55d7adc587
1
deps/oblib/src/lib/utility/ob_tracepoint.h
vendored
1
deps/oblib/src/lib/utility/ob_tracepoint.h
vendored
@ -613,6 +613,7 @@ class EventTable
|
||||
EN_LS_REBUILD_PREPARE_FAILED = 917,
|
||||
EN_TABLET_GC_TASK_FAILED = 918,
|
||||
EN_UPDATE_TABLET_HA_STATUS_FAILED = 919,
|
||||
EN_GENERATE_REBUILD_TASK_FAILED = 920,
|
||||
|
||||
// Log Archive and Restore 1001 - 1100
|
||||
EN_START_ARCHIVE_LOG_GAP = 1001,
|
||||
|
@ -545,6 +545,7 @@ int ObLSMigrationHandler::do_init_status_()
|
||||
int tmp_ret = OB_SUCCESS;
|
||||
ObMigrationStatus migration_status = ObMigrationStatus::OB_MIGRATION_STATUS_MAX;
|
||||
bool is_empty = false;
|
||||
bool can_switch_next_stage = true;
|
||||
ObLSMigrationHandlerStatus new_status = ObLSMigrationHandlerStatus::MAX_STATUS;
|
||||
|
||||
if (!is_inited_) {
|
||||
@ -578,6 +579,7 @@ int ObLSMigrationHandler::do_init_status_()
|
||||
} else {
|
||||
if (OB_FAIL(build_rebuild_task_())) {
|
||||
LOG_WARN("failed to build rebuild task", K(ret), KPC(ls_));
|
||||
can_switch_next_stage = false;
|
||||
reuse_();
|
||||
} else {
|
||||
is_empty = false;
|
||||
@ -591,26 +593,22 @@ int ObLSMigrationHandler::do_init_status_()
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
if (!is_empty && OB_FAIL(check_before_do_task_())) {
|
||||
ObLSMigrationTask task;
|
||||
if (OB_FAIL(check_before_do_task_())) {
|
||||
LOG_WARN("failed to check before do task", K(ret), KPC(ls_));
|
||||
} else if (OB_FAIL(change_status_(new_status))) {
|
||||
LOG_WARN("failed to change status", K(ret), K(new_status), KPC(ls_));
|
||||
} else if (OB_FAIL(get_ls_migration_task_(task))) {
|
||||
LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
||||
} else {
|
||||
if (!is_empty) {
|
||||
ObLSMigrationTask task;
|
||||
if (OB_FAIL(get_ls_migration_task_(task))) {
|
||||
LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
||||
} else {
|
||||
SERVER_EVENT_ADD("storage_ha", "ls_ha_start",
|
||||
"tenant_id", ls_->get_tenant_id(),
|
||||
"ls_id", ls_->get_ls_id().id(),
|
||||
"src", task.arg_.data_src_.get_server(),
|
||||
"dst", task.arg_.dst_.get_server(),
|
||||
"task_id", task.task_id_,
|
||||
"is_failed", OB_SUCCESS,
|
||||
ObMigrationOpType::get_str(task.arg_.type_));
|
||||
}
|
||||
}
|
||||
SERVER_EVENT_ADD("storage_ha", "ls_ha_start",
|
||||
"tenant_id", ls_->get_tenant_id(),
|
||||
"ls_id", ls_->get_ls_id().id(),
|
||||
"src", task.arg_.data_src_.get_server(),
|
||||
"dst", task.arg_.dst_.get_server(),
|
||||
"task_id", task.task_id_,
|
||||
"is_failed", OB_SUCCESS,
|
||||
ObMigrationOpType::get_str(task.arg_.type_));
|
||||
wakeup_();
|
||||
}
|
||||
}
|
||||
@ -618,7 +616,9 @@ int ObLSMigrationHandler::do_init_status_()
|
||||
}
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
if (OB_SUCCESS != (tmp_ret = switch_next_stage(ret))) {
|
||||
if (!can_switch_next_stage) {
|
||||
//do nothing
|
||||
} else if (OB_SUCCESS != (tmp_ret = switch_next_stage(ret))) {
|
||||
LOG_WARN("failed to report result", K(ret), K(tmp_ret));
|
||||
}
|
||||
}
|
||||
@ -999,10 +999,11 @@ int ObLSMigrationHandler::check_can_skip_prepare_status_(bool &can_skip)
|
||||
if (!is_inited_) {
|
||||
ret = OB_NOT_INIT;
|
||||
LOG_WARN("ls migration handler do not init", K(ret));
|
||||
} else if (OB_FAIL(get_ls_migration_task_(task))) {
|
||||
LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
||||
} else if (ObMigrationOpType::REBUILD_LS_OP == task.arg_.type_) {
|
||||
can_skip = false;
|
||||
//} else if (OB_FAIL(get_ls_migration_task_(task))) {
|
||||
// LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
||||
//} else if (ObMigrationOpType::REBUILD_LS_OP == task.arg_.type_) {
|
||||
// can_skip = false;
|
||||
// TODO(muwei.ym) Open IT in 4.1 and the condition should change to migration status rebuild flag setted.
|
||||
} else {
|
||||
can_skip = true;
|
||||
}
|
||||
@ -1106,6 +1107,15 @@ int ObLSMigrationHandler::build_rebuild_task_()
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ERRSIM
|
||||
if (OB_SUCC(ret)) {
|
||||
ret = E(EventTable::EN_GENERATE_REBUILD_TASK_FAILED) OB_SUCCESS;
|
||||
if (OB_FAIL(ret)) {
|
||||
STORAGE_LOG(ERROR, "fake EN_GENERATE_REBUILD_TASK_FAILED", K(ret));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
} else {
|
||||
ObTaskId task_id;
|
||||
|
Loading…
x
Reference in New Issue
Block a user