Fix potential issue with IntermResultManager and DetectManager calling each other.

This commit is contained in:
obdev
2023-12-28 12:17:57 +00:00
committed by ob-robot
parent c5c5a5dffe
commit 94e7e9eb39

View File

@ -261,19 +261,31 @@ int ObSingleDfoDetectCB::do_callback()
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
int clean_ret = OB_E(EventTable::EN_ENABLE_CLEAN_INTERM_RES) OB_SUCCESS; int clean_ret = OB_E(EventTable::EN_ENABLE_CLEAN_INTERM_RES) OB_SUCCESS;
if (OB_SUCC(clean_ret)) { if (OB_SUCC(clean_ret)) {
ret = MTL(sql::dtl::ObDTLIntermResultManager*)->erase_interm_result_info(key_, false); dtl::ObDTLIntermResultManager *interm_res_manager = MTL(dtl::ObDTLIntermResultManager*);
if (OB_ISNULL(interm_res_manager)) {
LIB_LOG(WARN, "[DM] single dfo erase_interm_result_info, but interm_res_manager is null",
K(ret), K(key_), K_(trace_id));
} else {
ret = interm_res_manager->erase_interm_result_info(key_, false);
ret = ret == OB_HASH_NOT_EXIST ? OB_SUCCESS : ret; ret = ret == OB_HASH_NOT_EXIST ? OB_SUCCESS : ret;
LIB_LOG(WARN, "[DM] single dfo erase_interm_result_info", K(ret), K(key_), K_(trace_id)); LIB_LOG(WARN, "[DM] single dfo erase_interm_result_info", K(ret), K(key_), K_(trace_id));
} }
}
return ret; return ret;
} }
int ObTempTableDetectCB::do_callback() int ObTempTableDetectCB::do_callback()
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ret = MTL(sql::dtl::ObDTLIntermResultManager*)->erase_interm_result_info(key_, false); dtl::ObDTLIntermResultManager *interm_res_manager = MTL(dtl::ObDTLIntermResultManager*);
if (OB_ISNULL(interm_res_manager)) {
LIB_LOG(WARN, "[DM] temp table erase_interm_result_info, but interm_res_manager is null",
K(ret), K(key_), K_(trace_id));
} else {
ret = interm_res_manager->erase_interm_result_info(key_, false);
ret = ret == OB_HASH_NOT_EXIST ? OB_SUCCESS : ret; ret = ret == OB_HASH_NOT_EXIST ? OB_SUCCESS : ret;
LIB_LOG(WARN, "[DM] temp table erase_interm_result_info", K(ret), K(key_), K_(trace_id)); LIB_LOG(WARN, "[DM] temp table erase_interm_result_info", K(ret), K(key_), K_(trace_id));
}
return ret; return ret;
} }