fix some ddl problems.
This commit is contained in:
@ -1375,7 +1375,7 @@ int ObDDLScheduler::on_ddl_task_finish(
|
|||||||
LOG_WARN("invalid arguments", K(ret), K(parent_task_id), K(child_task_key));
|
LOG_WARN("invalid arguments", K(ret), K(parent_task_id), K(child_task_key));
|
||||||
} else {
|
} else {
|
||||||
ObDDLTask *ddl_task = nullptr;
|
ObDDLTask *ddl_task = nullptr;
|
||||||
ObTableRedefinitionTask *redefinition_task = nullptr;
|
ObDDLRedefinitionTask *redefinition_task = nullptr;
|
||||||
if (OB_FAIL(task_queue_.get_task(parent_task_id, ddl_task))) {
|
if (OB_FAIL(task_queue_.get_task(parent_task_id, ddl_task))) {
|
||||||
if (OB_ENTRY_NOT_EXIST == ret) {
|
if (OB_ENTRY_NOT_EXIST == ret) {
|
||||||
bool is_cancel = false;
|
bool is_cancel = false;
|
||||||
@ -1395,7 +1395,7 @@ int ObDDLScheduler::on_ddl_task_finish(
|
|||||||
} else if (OB_ISNULL(ddl_task)) {
|
} else if (OB_ISNULL(ddl_task)) {
|
||||||
ret = OB_ERR_SYS;
|
ret = OB_ERR_SYS;
|
||||||
LOG_WARN("ddl task must not be nullptr", K(ret));
|
LOG_WARN("ddl task must not be nullptr", K(ret));
|
||||||
} else if (FALSE_IT(redefinition_task = static_cast<ObTableRedefinitionTask *>(ddl_task))) {
|
} else if (FALSE_IT(redefinition_task = static_cast<ObDDLRedefinitionTask *>(ddl_task))) {
|
||||||
} else if (OB_FAIL(redefinition_task->on_child_task_finish(child_task_key, ret_code))) {
|
} else if (OB_FAIL(redefinition_task->on_child_task_finish(child_task_key, ret_code))) {
|
||||||
LOG_WARN("on child task finish failed", K(ret), K(child_task_key));
|
LOG_WARN("on child task finish failed", K(ret), K(child_task_key));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -487,8 +487,7 @@ int ObDDLTask::wait_trans_end(
|
|||||||
// try wait transaction end
|
// try wait transaction end
|
||||||
if (OB_SUCC(ret) && new_status != next_task_status && tmp_snapshot_version <= 0) {
|
if (OB_SUCC(ret) && new_status != next_task_status && tmp_snapshot_version <= 0) {
|
||||||
bool is_trans_end = false;
|
bool is_trans_end = false;
|
||||||
const bool need_wait_trans_end = true;
|
if (OB_FAIL(wait_trans_ctx.try_wait(is_trans_end, tmp_snapshot_version, true /*need_wait_trans_end */))) {
|
||||||
if (OB_FAIL(wait_trans_ctx.try_wait(is_trans_end, tmp_snapshot_version, need_wait_trans_end))) {
|
|
||||||
if (OB_EAGAIN != ret) {
|
if (OB_EAGAIN != ret) {
|
||||||
LOG_WARN("fail to try wait transaction", K(ret));
|
LOG_WARN("fail to try wait transaction", K(ret));
|
||||||
} else {
|
} else {
|
||||||
@ -803,7 +802,7 @@ int ObDDLWaitTransEndCtx::try_wait(bool &is_trans_end, int64_t &snapshot_version
|
|||||||
if (OB_SUCCESS == ret_codes.at(i) && tmp_snapshots.at(i) > 0) {
|
if (OB_SUCCESS == ret_codes.at(i) && tmp_snapshots.at(i) > 0) {
|
||||||
snapshot_array_.at(tablet_pos_indexes.at(i)) = tmp_snapshots.at(i);
|
snapshot_array_.at(tablet_pos_indexes.at(i)) = tmp_snapshots.at(i);
|
||||||
++succ_count;
|
++succ_count;
|
||||||
} else if (OB_EAGAIN == ret_codes.at(i)) {
|
} else if (ObIDDLTask::in_ddl_retry_white_list(ret_codes.at(i))) {
|
||||||
// need retry
|
// need retry
|
||||||
} else if (OB_SUCCESS != ret_codes.at(i)) {
|
} else if (OB_SUCCESS != ret_codes.at(i)) {
|
||||||
ret = ret_codes.at(i);
|
ret = ret_codes.at(i);
|
||||||
|
|||||||
Reference in New Issue
Block a user