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), snapshot_interval_(DEFAULT_SNAPSHOT_INTERVAL),
tg_id_(-1), tg_id_(-1),
timeout_ts_(0), timeout_ts_(0),
is_running_task_(false) is_running_task_(false),
is_inited_(false)
{} {}
int WorkloadRepositoryTask::schedule_one_task(int64_t interval) int WorkloadRepositoryTask::schedule_one_task(int64_t interval)
@ -88,6 +89,7 @@ int WorkloadRepositoryTask::start()
} else if (OB_FAIL(TG_START(tg_id_))) { } else if (OB_FAIL(TG_START(tg_id_))) {
LOG_WARN("failed to start wr task", K(ret)); LOG_WARN("failed to start wr task", K(ret));
} else { } else {
is_inited_ = true;
LOG_INFO("init wr task thread finished", K_(tg_id)); LOG_INFO("init wr task thread finished", K_(tg_id));
} }
return ret; return ret;
@ -95,22 +97,46 @@ int WorkloadRepositoryTask::start()
void WorkloadRepositoryTask::stop() 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_); TG_STOP(tg_id_);
}
} }
void WorkloadRepositoryTask::wait() 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_); TG_WAIT(tg_id_);
}
} }
void WorkloadRepositoryTask::destroy() 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_); TG_DESTROY(tg_id_);
}
} }
void WorkloadRepositoryTask::cancel_current_task() 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); TG_CANCEL(tg_id_, *this);
}
} }
// execute a deletion task every six snapshots completed // execute a deletion task every six snapshots completed

View File

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