[CP] Check rs status while process async task

This commit is contained in:
tino247
2023-05-17 11:11:34 +00:00
committed by ob-robot
parent a47570d7f6
commit 0a76ae999f
7 changed files with 46 additions and 340 deletions

View File

@ -381,31 +381,6 @@ ObAsyncTask *ObRootService::ObMinorFreezeTask::deep_copy(char *buf, const int64_
return task;
}
ObRootService::ObInnerTableMonitorTask::ObInnerTableMonitorTask(ObRootService &rs)
:ObAsyncTimerTask(rs.task_queue_),
rs_(rs)
{}
int ObRootService::ObInnerTableMonitorTask::process()
{
int ret = OB_SUCCESS;
if (OB_FAIL(rs_.inner_table_monitor_.purge_inner_table_history())) {
LOG_WARN("failed to purge inner table history", K(ret));
}
return ret;
}
ObAsyncTask *ObRootService::ObInnerTableMonitorTask::deep_copy(char *buf, const int64_t buf_size) const
{
ObInnerTableMonitorTask *task = NULL;
if (NULL == buf || buf_size < static_cast<int64_t>(sizeof(*this))) {
LOG_WARN_RET(OB_BUF_NOT_ENOUGH, "buffer not large enough", K(buf_size));
} else {
task = new(buf) ObInnerTableMonitorTask(rs_);
}
return task;
}
////////////////////////////////////////////////////////////////
bool ObRsStatus::can_start_service() const
@ -655,7 +630,6 @@ ObRootService::ObRootService()
upgrade_executor_(),
upgrade_storage_format_executor_(), create_inner_schema_executor_(),
bootstrap_lock_(), broadcast_rs_list_lock_(ObLatchIds::RS_BROADCAST_LOCK),
inner_table_monitor_(),
task_queue_(),
inspect_task_queue_(),
restart_task_(*this),
@ -668,7 +642,6 @@ ObRootService::ObRootService()
SERVER_EVENT_INSTANCE,
DEALOCK_EVENT_INSTANCE,
task_queue_),
inner_table_monitor_task_(*this),
inspector_task_(*this),
purge_recyclebin_task_(*this),
ddl_scheduler_(),
@ -919,8 +892,6 @@ int ObRootService::init(ObServerConfig &config,
server_manager_, zone_manager_, rpc_proxy_,
self_addr_, sql_proxy, disaster_recovery_task_mgr_))) {
FLOG_WARN("init root balancer failed", KR(ret));
} else if (OB_FAIL(inner_table_monitor_.init(sql_proxy, common_proxy_, *this))) {
FLOG_WARN("init inner table monitor failed", KR(ret));
} else if (OB_FAIL(ROOTSERVICE_EVENT_INSTANCE.init(sql_proxy, self_addr_))) {
FLOG_WARN("init rootservice event history failed", KR(ret));
} else if (OB_FAIL(THE_RS_JOB_TABLE.init(&sql_proxy, self_addr_))) {
@ -1346,6 +1317,10 @@ void ObRootService::wait()
int64_t cost = ObTimeUtility::current_time() - start_time;
ROOTSERVICE_EVENT_ADD("root_service", "finish_wait_stop", K(cost));
FLOG_INFO("[ROOTSERVICE_NOTICE] rootservice wait finished", K(start_time), K(cost));
if (cost > 10 * 60 * 1000 * 1000L) { // 10min
int ret = OB_ERROR;
LOG_ERROR("cost too much time to wait rs stop", KR(ret), K(start_time), K(cost));
}
}
int ObRootService::reload_config()
@ -1552,21 +1527,6 @@ int ObRootService::schedule_check_server_timer_task()
return ret;
}
int ObRootService::schedule_inner_table_monitor_task()
{
int ret = OB_SUCCESS;
if (!inited_) {
ret = OB_NOT_INIT;
LOG_WARN("not init", K(ret));
} else if (OB_FAIL(task_queue_.add_timer_task(inner_table_monitor_task_,
ObInnerTableMonitorTask::PURGE_INTERVAL, true))) {
LOG_WARN("failed to add task", K(ret));
} else {
LOG_INFO("schedule inner_table_monitor task");
}
return ret;
}
int ObRootService::schedule_recyclebin_task(int64_t delay)
{
int ret = OB_SUCCESS;
@ -5241,15 +5201,6 @@ int ObRootService::start_timer_tasks()
}
}
if (OB_SUCC(ret) && !task_queue_.exist_timer_task(inner_table_monitor_task_)) {
// remove purge inner table task, we may fail to get history schema after purge.
// if (OB_FAIL(schedule_inner_table_monitor_task())) {
// LOG_WARN("start inner table monitor service fail", K(ret));
// } else {
// LOG_INFO("start inner table monitor success");
// }
}
if (OB_SUCC(ret)) {
if (OB_FAIL(schedule_inspector_task())) {
LOG_WARN("start inspector fail", K(ret));
@ -5292,7 +5243,6 @@ int ObRootService::stop_timer_tasks()
task_queue_.cancel_timer_task(restart_task_);
task_queue_.cancel_timer_task(check_server_task_);
task_queue_.cancel_timer_task(event_table_clear_task_);
task_queue_.cancel_timer_task(inner_table_monitor_task_);
task_queue_.cancel_timer_task(self_check_task_);
task_queue_.cancel_timer_task(update_rs_list_timer_task_);
inspect_task_queue_.cancel_timer_task(inspector_task_);