Fix rebuild some bugs
This commit is contained in:
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_LS_REBUILD_PREPARE_FAILED = 917,
|
||||||
EN_TABLET_GC_TASK_FAILED = 918,
|
EN_TABLET_GC_TASK_FAILED = 918,
|
||||||
EN_UPDATE_TABLET_HA_STATUS_FAILED = 919,
|
EN_UPDATE_TABLET_HA_STATUS_FAILED = 919,
|
||||||
|
EN_GENERATE_REBUILD_TASK_FAILED = 920,
|
||||||
|
|
||||||
// Log Archive and Restore 1001 - 1100
|
// Log Archive and Restore 1001 - 1100
|
||||||
EN_START_ARCHIVE_LOG_GAP = 1001,
|
EN_START_ARCHIVE_LOG_GAP = 1001,
|
||||||
|
|||||||
@ -545,6 +545,7 @@ int ObLSMigrationHandler::do_init_status_()
|
|||||||
int tmp_ret = OB_SUCCESS;
|
int tmp_ret = OB_SUCCESS;
|
||||||
ObMigrationStatus migration_status = ObMigrationStatus::OB_MIGRATION_STATUS_MAX;
|
ObMigrationStatus migration_status = ObMigrationStatus::OB_MIGRATION_STATUS_MAX;
|
||||||
bool is_empty = false;
|
bool is_empty = false;
|
||||||
|
bool can_switch_next_stage = true;
|
||||||
ObLSMigrationHandlerStatus new_status = ObLSMigrationHandlerStatus::MAX_STATUS;
|
ObLSMigrationHandlerStatus new_status = ObLSMigrationHandlerStatus::MAX_STATUS;
|
||||||
|
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
@ -578,6 +579,7 @@ int ObLSMigrationHandler::do_init_status_()
|
|||||||
} else {
|
} else {
|
||||||
if (OB_FAIL(build_rebuild_task_())) {
|
if (OB_FAIL(build_rebuild_task_())) {
|
||||||
LOG_WARN("failed to build rebuild task", K(ret), KPC(ls_));
|
LOG_WARN("failed to build rebuild task", K(ret), KPC(ls_));
|
||||||
|
can_switch_next_stage = false;
|
||||||
reuse_();
|
reuse_();
|
||||||
} else {
|
} else {
|
||||||
is_empty = false;
|
is_empty = false;
|
||||||
@ -591,26 +593,22 @@ int ObLSMigrationHandler::do_init_status_()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (OB_SUCC(ret)) {
|
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_));
|
LOG_WARN("failed to check before do task", K(ret), KPC(ls_));
|
||||||
} else if (OB_FAIL(change_status_(new_status))) {
|
} else if (OB_FAIL(change_status_(new_status))) {
|
||||||
LOG_WARN("failed to change status", K(ret), K(new_status), KPC(ls_));
|
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 {
|
} else {
|
||||||
if (!is_empty) {
|
SERVER_EVENT_ADD("storage_ha", "ls_ha_start",
|
||||||
ObLSMigrationTask task;
|
"tenant_id", ls_->get_tenant_id(),
|
||||||
if (OB_FAIL(get_ls_migration_task_(task))) {
|
"ls_id", ls_->get_ls_id().id(),
|
||||||
LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
"src", task.arg_.data_src_.get_server(),
|
||||||
} else {
|
"dst", task.arg_.dst_.get_server(),
|
||||||
SERVER_EVENT_ADD("storage_ha", "ls_ha_start",
|
"task_id", task.task_id_,
|
||||||
"tenant_id", ls_->get_tenant_id(),
|
"is_failed", OB_SUCCESS,
|
||||||
"ls_id", ls_->get_ls_id().id(),
|
ObMigrationOpType::get_str(task.arg_.type_));
|
||||||
"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_();
|
wakeup_();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -618,7 +616,9 @@ int ObLSMigrationHandler::do_init_status_()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (OB_FAIL(ret)) {
|
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));
|
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_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
LOG_WARN("ls migration handler do not init", K(ret));
|
LOG_WARN("ls migration handler do not init", K(ret));
|
||||||
} else if (OB_FAIL(get_ls_migration_task_(task))) {
|
//} else if (OB_FAIL(get_ls_migration_task_(task))) {
|
||||||
LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
// LOG_WARN("failed to get ls migration task", K(ret), KPC(ls_));
|
||||||
} else if (ObMigrationOpType::REBUILD_LS_OP == task.arg_.type_) {
|
//} else if (ObMigrationOpType::REBUILD_LS_OP == task.arg_.type_) {
|
||||||
can_skip = false;
|
// can_skip = false;
|
||||||
|
// TODO(muwei.ym) Open IT in 4.1 and the condition should change to migration status rebuild flag setted.
|
||||||
} else {
|
} else {
|
||||||
can_skip = true;
|
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)) {
|
if (OB_FAIL(ret)) {
|
||||||
} else {
|
} else {
|
||||||
ObTaskId task_id;
|
ObTaskId task_id;
|
||||||
|
|||||||
Reference in New Issue
Block a user