Prevent stopping WR task without initialization
This commit is contained in:
@ -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()
|
||||||
{
|
{
|
||||||
TG_STOP(tg_id_);
|
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()
|
void WorkloadRepositoryTask::wait()
|
||||||
{
|
{
|
||||||
TG_WAIT(tg_id_);
|
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()
|
void WorkloadRepositoryTask::destroy()
|
||||||
{
|
{
|
||||||
TG_DESTROY(tg_id_);
|
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()
|
void WorkloadRepositoryTask::cancel_current_task()
|
||||||
{
|
{
|
||||||
TG_CANCEL(tg_id_, *this);
|
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
|
// execute a deletion task every six snapshots completed
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user