[CP] fix double destroy && force dump dag status in destroy

This commit is contained in:
a1iive 2023-09-20 14:42:01 +00:00 committed by ob-robot
parent 055b14bc3a
commit a4cf5ecbd2
6 changed files with 25 additions and 5 deletions

View File

@ -1704,7 +1704,7 @@ void ObTenantDagScheduler::reset()
WEAK_BARRIER(); WEAK_BARRIER();
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
int64_t abort_dag_cnt = 0; int64_t abort_dag_cnt = 0;
dump_dag_status(); dump_dag_status(true);
for (int64_t j = 0; j < DAG_LIST_MAX; ++j) { for (int64_t j = 0; j < DAG_LIST_MAX; ++j) {
for (int64_t i = 0; i < PriorityDagList::PRIO_CNT; ++i) { for (int64_t i = 0; i < PriorityDagList::PRIO_CNT; ++i) {
ObIDag *head = dag_list_[j].get_head(i); ObIDag *head = dag_list_[j].get_head(i);
@ -1947,9 +1947,9 @@ int ObTenantDagScheduler::add_dag(
return ret; return ret;
} }
void ObTenantDagScheduler::dump_dag_status() void ObTenantDagScheduler::dump_dag_status(const bool force_dump/*false*/)
{ {
if (REACH_TENANT_TIME_INTERVAL(DUMP_DAG_STATUS_INTERVAL)) { if (force_dump || REACH_TENANT_TIME_INTERVAL(DUMP_DAG_STATUS_INTERVAL)) {
int64_t scheduled_task_cnt = 0; int64_t scheduled_task_cnt = 0;
int64_t running_task[ObDagPrio::DAG_PRIO_MAX]; int64_t running_task[ObDagPrio::DAG_PRIO_MAX];
int64_t low_limits[ObDagPrio::DAG_PRIO_MAX]; int64_t low_limits[ObDagPrio::DAG_PRIO_MAX];

View File

@ -898,7 +898,7 @@ private:
bool try_switch(ObTenantDagWorker &worker); bool try_switch(ObTenantDagWorker &worker);
int try_switch(ObTenantDagWorker &worker, const int64_t src_prio, const int64_t dest_prio, bool &need_pause); int try_switch(ObTenantDagWorker &worker, const int64_t src_prio, const int64_t dest_prio, bool &need_pause);
void pause_worker(ObTenantDagWorker &worker, const int64_t priority); void pause_worker(ObTenantDagWorker &worker, const int64_t priority);
void dump_dag_status(); void dump_dag_status(const bool force_dump = false);
int check_need_load_shedding(const int64_t priority, const bool for_schedule, bool &need_shedding); int check_need_load_shedding(const int64_t priority, const bool for_schedule, bool &need_shedding);
void update_work_thread_num(); void update_work_thread_num();
int move_dag_to_list_( int move_dag_to_list_(

View File

@ -227,6 +227,12 @@ ObTenantTabletScheduler::~ObTenantTabletScheduler()
} }
void ObTenantTabletScheduler::destroy() void ObTenantTabletScheduler::destroy()
{
if (IS_INIT) {
reset();
}
}
void ObTenantTabletScheduler::reset()
{ {
stop(); stop();
wait(); wait();
@ -290,7 +296,9 @@ int ObTenantTabletScheduler::init()
schedule_tablet_batch_size_ = schedule_batch_size; schedule_tablet_batch_size_ = schedule_batch_size;
is_inited_ = true; is_inited_ = true;
} }
if (!is_inited_) {
reset();
}
return ret; return ret;
} }

View File

@ -204,6 +204,7 @@ public:
int init(); int init();
int start(); int start();
void destroy(); void destroy();
void reset();
void stop(); void stop();
void wait(); void wait();
bool is_stop() const { return is_stop_; } bool is_stop() const { return is_stop_; }

View File

@ -533,6 +533,9 @@ int ObTenantTabletStatMgr::init(const int64_t tenant_id)
} else { } else {
is_inited_ = true; is_inited_ = true;
} }
if (!is_inited_) {
reset();
}
return ret; return ret;
} }
@ -558,6 +561,13 @@ void ObTenantTabletStatMgr::stop()
} }
void ObTenantTabletStatMgr::destroy() void ObTenantTabletStatMgr::destroy()
{
if (IS_INIT) {
reset();
}
}
void ObTenantTabletStatMgr::reset()
{ {
stop(); stop();
wait(); wait();

View File

@ -319,6 +319,7 @@ public:
void wait(); void wait();
void stop(); void stop();
void destroy(); void destroy();
void reset();
int report_stat( int report_stat(
const ObTabletStat &stat, const ObTabletStat &stat,