Prevent stopping WR task without initialization

This commit is contained in:
AntiTopQuark
2024-02-22 09:45:59 +00:00
committed by ob-robot
parent 8d22244e43
commit 6d820a15b8
2 changed files with 32 additions and 5 deletions

View File

@ -44,7 +44,8 @@ WorkloadRepositoryTask::WorkloadRepositoryTask()
snapshot_interval_(DEFAULT_SNAPSHOT_INTERVAL),
tg_id_(-1),
timeout_ts_(0),
is_running_task_(false)
is_running_task_(false),
is_inited_(false)
{}
int WorkloadRepositoryTask::schedule_one_task(int64_t interval)
@ -88,6 +89,7 @@ int WorkloadRepositoryTask::start()
} else if (OB_FAIL(TG_START(tg_id_))) {
LOG_WARN("failed to start wr task", K(ret));
} else {
is_inited_ = true;
LOG_INFO("init wr task thread finished", K_(tg_id));
}
return ret;
@ -95,23 +97,47 @@ int WorkloadRepositoryTask::start()
void WorkloadRepositoryTask::stop()
{
int ret = OB_SUCCESS;
if (OB_UNLIKELY(!is_inited_)) {
ret = OB_NOT_INIT;
LOG_WARN("wr task not init", K(ret));
} else {
TG_STOP(tg_id_);
}
}
void WorkloadRepositoryTask::wait()
{
int ret = OB_SUCCESS;
if (OB_UNLIKELY(!is_inited_)) {
ret = OB_NOT_INIT;
LOG_WARN("wr task not init", K(ret));
} else {
TG_WAIT(tg_id_);
}
}
void WorkloadRepositoryTask::destroy()
{
int ret = OB_SUCCESS;
if (OB_UNLIKELY(!is_inited_)) {
ret = OB_NOT_INIT;
LOG_WARN("wr task not init", K(ret));
} else {
TG_DESTROY(tg_id_);
}
}
void WorkloadRepositoryTask::cancel_current_task()
{
int ret = OB_SUCCESS;
if (OB_UNLIKELY(!is_inited_)) {
ret = OB_NOT_INIT;
LOG_WARN("wr task not init", K(ret));
} else {
TG_CANCEL(tg_id_, *this);
}
}
// execute a deletion task every six snapshots completed
void WorkloadRepositoryTask::runTimerTask()

View File

@ -191,6 +191,7 @@ private:
int tg_id_;
int64_t timeout_ts_;
bool is_running_task_;
bool is_inited_;
};
}//end namespace share