Before dtl_interm_result_manager executes mtl_stop and mtl_wait, determine whether mtl_start has been executed.

This commit is contained in:
obdev
2024-01-22 07:17:11 +00:00
committed by ob-robot
parent ef00065d5c
commit 3de97b1dd1
3 changed files with 12 additions and 3 deletions

View File

@ -628,6 +628,7 @@ int ObDTLIntermResultManager::mtl_start(ObDTLIntermResultManager *&dtl_interm_re
} else {
dtl_interm_result_manager->get_gc_task().disable_timeout_check();
dtl_interm_result_manager->get_gc_task().dtl_interm_result_manager_ = dtl_interm_result_manager;
dtl_interm_result_manager->get_gc_task().is_start_ = true;
}
}
return ret;
@ -635,14 +636,16 @@ int ObDTLIntermResultManager::mtl_start(ObDTLIntermResultManager *&dtl_interm_re
void ObDTLIntermResultManager::mtl_stop(ObDTLIntermResultManager *&dtl_interm_result_manager)
{
if (OB_LIKELY(nullptr != dtl_interm_result_manager)) {
if (OB_LIKELY(nullptr != dtl_interm_result_manager) &&
dtl_interm_result_manager->get_gc_task().is_start_) {
TG_CANCEL_TASK(MTL(omt::ObSharedTimer*)->get_tg_id(), dtl_interm_result_manager->get_gc_task());
}
}
void ObDTLIntermResultManager::mtl_wait(ObDTLIntermResultManager *&dtl_interm_result_manager)
{
if (OB_LIKELY(nullptr != dtl_interm_result_manager)) {
if (OB_LIKELY(nullptr != dtl_interm_result_manager &&
dtl_interm_result_manager->get_gc_task().is_start_)) {
TG_WAIT_TASK(MTL(omt::ObSharedTimer*)->get_tg_id(), dtl_interm_result_manager->get_gc_task());
}
}

View File

@ -215,11 +215,12 @@ public:
class ObDTLIntermResultGCTask : public common::ObTimerTask
{
public:
ObDTLIntermResultGCTask() : dtl_interm_result_manager_(NULL) {}
ObDTLIntermResultGCTask() : dtl_interm_result_manager_(NULL), is_start_(false) {}
virtual ~ObDTLIntermResultGCTask() {}
virtual void runTimerTask() override;
const static int64_t REFRESH_INTERVAL = 10 * 1000L * 1000L; // 10秒间隔
ObDTLIntermResultManager *dtl_interm_result_manager_;
bool is_start_;
};
class ObDTLIntermResultManager