fix heart beat remove bug
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
@ -599,6 +599,7 @@ class EventTable
|
|||||||
EN_DDL_RELEASE_DDL_KV_FAIL = 514,
|
EN_DDL_RELEASE_DDL_KV_FAIL = 514,
|
||||||
EN_DDL_REPORT_CHECKSUM_FAIL = 515,
|
EN_DDL_REPORT_CHECKSUM_FAIL = 515,
|
||||||
EN_DDL_REPORT_REPLICA_BUILD_STATUS_FAIL = 516,
|
EN_DDL_REPORT_REPLICA_BUILD_STATUS_FAIL = 516,
|
||||||
|
EN_DDL_DIRECT_LOAD_WAIT_TABLE_LOCK_FAIL = 517,
|
||||||
|
|
||||||
// 600-700 For PX use
|
// 600-700 For PX use
|
||||||
EN_PX_SQC_EXECUTE_FAILED = 600,
|
EN_PX_SQC_EXECUTE_FAILED = 600,
|
||||||
|
|||||||
@ -42,8 +42,18 @@ int ObDDLServerClient::create_hidden_table(const obrpc::ObCreateHiddenTableArg &
|
|||||||
LOG_WARN("failed to create hidden table", KR(ret), K(arg));
|
LOG_WARN("failed to create hidden table", KR(ret), K(arg));
|
||||||
} else if (OB_FAIL(OB_DDL_HEART_BEAT_TASK_CONTAINER.set_register_task_id(res.task_id_, res.tenant_id_))) {
|
} else if (OB_FAIL(OB_DDL_HEART_BEAT_TASK_CONTAINER.set_register_task_id(res.task_id_, res.tenant_id_))) {
|
||||||
LOG_WARN("failed to set register task id", K(ret), K(res));
|
LOG_WARN("failed to set register task id", K(ret), K(res));
|
||||||
} else if (OB_FAIL(wait_task_reach_pending(arg.tenant_id_, res.task_id_, *GCTX.sql_proxy_, session))) {
|
}
|
||||||
|
if (OB_SUCC(ret)) {
|
||||||
|
if (OB_FAIL(wait_task_reach_pending(arg.tenant_id_, res.task_id_, *GCTX.sql_proxy_, session))) {
|
||||||
LOG_WARN("failed to wait table lock. remove register task id and abort redef table task.", K(ret), K(arg), K(res));
|
LOG_WARN("failed to wait table lock. remove register task id and abort redef table task.", K(ret), K(arg), K(res));
|
||||||
|
}
|
||||||
|
#ifdef ERRSIM
|
||||||
|
if (OB_SUCC(ret)) {
|
||||||
|
ret = OB_E(common::EventTable::EN_DDL_DIRECT_LOAD_WAIT_TABLE_LOCK_FAIL) OB_SUCCESS;
|
||||||
|
LOG_INFO("wait table lock failed errsim", K(ret));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (OB_FAIL(ret)) {
|
||||||
int tmp_ret = OB_SUCCESS;
|
int tmp_ret = OB_SUCCESS;
|
||||||
obrpc::ObAbortRedefTableArg abort_redef_table_arg;
|
obrpc::ObAbortRedefTableArg abort_redef_table_arg;
|
||||||
abort_redef_table_arg.task_id_ = res.task_id_;
|
abort_redef_table_arg.task_id_ = res.task_id_;
|
||||||
@ -51,8 +61,7 @@ int ObDDLServerClient::create_hidden_table(const obrpc::ObCreateHiddenTableArg &
|
|||||||
if (OB_TMP_FAIL(abort_redef_table(abort_redef_table_arg, session))) {
|
if (OB_TMP_FAIL(abort_redef_table(abort_redef_table_arg, session))) {
|
||||||
LOG_WARN("failed to abort redef table", K(tmp_ret), K(abort_redef_table_arg));
|
LOG_WARN("failed to abort redef table", K(tmp_ret), K(abort_redef_table_arg));
|
||||||
}
|
}
|
||||||
if (OB_TMP_FAIL(heart_beat_clear(res.task_id_))) {
|
// abort_redef_table() function last step must remove heart_beat task, so there is no need to call heart_beat_clear()
|
||||||
LOG_WARN("heart beat clear failed", K(tmp_ret), K(res.task_id_));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -81,9 +90,7 @@ int ObDDLServerClient::start_redef_table(const obrpc::ObStartRedefTableArg &arg,
|
|||||||
if (OB_TMP_FAIL(abort_redef_table(abort_redef_table_arg, session))) {
|
if (OB_TMP_FAIL(abort_redef_table(abort_redef_table_arg, session))) {
|
||||||
LOG_WARN("failed to abort redef table", K(tmp_ret), K(abort_redef_table_arg));
|
LOG_WARN("failed to abort redef table", K(tmp_ret), K(abort_redef_table_arg));
|
||||||
}
|
}
|
||||||
if (OB_TMP_FAIL(heart_beat_clear(res.task_id_))) {
|
// abort_redef_table() function last step must remove heart_beat task, so there is no need to call heart_beat_clear()
|
||||||
LOG_WARN("heart beat clear failed", K(tmp_ret), K(res.task_id_));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -163,10 +170,16 @@ int ObDDLServerClient::abort_redef_table(const obrpc::ObAbortRedefTableArg &arg,
|
|||||||
if (OB_ENTRY_NOT_EXIST == ret) {
|
if (OB_ENTRY_NOT_EXIST == ret) {
|
||||||
ret = OB_SUCCESS;
|
ret = OB_SUCCESS;
|
||||||
}
|
}
|
||||||
if (OB_FAIL(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
} else if (OB_FAIL(sql::ObDDLExecutorUtil::wait_ddl_finish(arg.tenant_id_, arg.task_id_, session, common_rpc_proxy))) {
|
if (OB_FAIL(sql::ObDDLExecutorUtil::wait_ddl_finish(arg.tenant_id_, arg.task_id_, session, common_rpc_proxy))) {
|
||||||
|
if (OB_CANCELED == ret) {
|
||||||
|
ret = OB_SUCCESS;
|
||||||
|
LOG_INFO("ddl abort success", K_(arg.task_id));
|
||||||
|
} else {
|
||||||
LOG_WARN("wait ddl finish failed", K(ret), K(arg.tenant_id_), K(arg.task_id_));
|
LOG_WARN("wait ddl finish failed", K(ret), K(arg.tenant_id_), K(arg.task_id_));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
int tmp_ret = OB_SUCCESS;
|
int tmp_ret = OB_SUCCESS;
|
||||||
if (OB_TMP_FAIL(heart_beat_clear(arg.task_id_))) {
|
if (OB_TMP_FAIL(heart_beat_clear(arg.task_id_))) {
|
||||||
LOG_WARN("heart beat clear failed", K(tmp_ret), K(arg.task_id_));
|
LOG_WARN("heart beat clear failed", K(tmp_ret), K(arg.task_id_));
|
||||||
|
|||||||
Reference in New Issue
Block a user