fix insert oom caused by wrap allocator's interface empty

This commit is contained in:
leslieyuchen
2022-11-13 02:14:32 +08:00
committed by wangzelin.wzl
parent 7f0d609c5f
commit 4c5f2470b8
29 changed files with 423 additions and 496 deletions

View File

@ -68,11 +68,14 @@ int ObDASSyncAccessP::before_process()
int ObDASSyncAccessP::process()
{
int ret = OB_SUCCESS;
NG_TRACE(das_rpc_process_begin);
FLTSpanGuard(das_rpc_process);
ObDASTaskArg &task = arg_;
ObDASTaskResp &task_resp = result_;
ObIDASTaskOp *task_op = task.get_task_op();
ObIDASTaskResult *task_result = task_resp.get_op_result();
bool has_more = false;
ObDASOpType task_type = DAS_OP_INVALID;
//regardless of the success of the task execution, the fllowing meta info must be set
task_result->set_task_id(task_op->get_task_id());
task_resp.set_ctrl_svr(task.get_ctrl_svr());
@ -87,6 +90,7 @@ int ObDASSyncAccessP::process()
} else if (OB_UNLIKELY(has_more) && OB_FAIL(task_op->fill_extra_result())) {
LOG_WARN("fill extra result to controller failed", KR(ret));
} else {
task_type = task_op->get_type();
task_resp.set_has_more(has_more);
ObWarningBuffer *wb = ob_get_tsi_warning_buffer();
if (wb != nullptr) {
@ -122,14 +126,19 @@ int ObDASSyncAccessP::process()
}
}
LOG_DEBUG("process das sync access task", K(ret), K(task), KPC(task_result), K(has_more));
NG_TRACE_EXT(das_rpc_process_end, OB_ID(type), task_type);
return OB_SUCCESS;
}
int ObDASSyncAccessP::after_process(int error_code)
{
int ret = OB_SUCCESS;
const int64_t elapsed_time = common::ObTimeUtility::current_time() - get_receive_timestamp();
if (OB_FAIL(ObDASSyncRpcProcessor::after_process(error_code))) {
LOG_WARN("do das sync base rpc process failed", K(ret));
} else if (elapsed_time >= ObServerConfig::get_instance().trace_log_slow_query_watermark) {
//slow das task, print trace info
FORCE_PRINT_TRACE(THE_TRACE, "[slow das rpc process]");
}
//执行相关的错误信息不用传递给RPC框架,RPC框架不处理具体的RPC执行错误信息,始终返回OB_SUCCESS
return OB_SUCCESS;
@ -150,6 +159,8 @@ void ObDASSyncAccessP::cleanup()
int ObDASSyncFetchP::process()
{
int ret = OB_SUCCESS;
NG_TRACE(fetch_das_result_process_begin);
FLTSpanGuard(fetch_das_result_process);
ObDASDataFetchReq &req = arg_;
ObDASDataFetchRes &res = result_;
ObDataAccessService *das = NULL;
@ -179,9 +190,26 @@ int ObDASSyncFetchP::process()
} else {
res.set_has_more(has_more);
}
NG_TRACE(fetch_das_result_process_end);
return ret;
}
int ObDASAsyncEraseP::process() {
int ObDASSyncFetchP::after_process(int error_code)
{
int ret = OB_SUCCESS;
const int64_t elapsed_time = common::ObTimeUtility::current_time() - get_receive_timestamp();
if (OB_FAIL(ObDASSyncFetchResRpcProcessor::after_process(error_code))) {
LOG_WARN("do das sync base rpc process failed", K(ret));
} else if (elapsed_time >= ObServerConfig::get_instance().trace_log_slow_query_watermark) {
//slow das task, print trace info
FORCE_PRINT_TRACE(THE_TRACE, "[slow das rpc process]");
}
//执行相关的错误信息不用传递给RPC框架,RPC框架不处理具体的RPC执行错误信息,始终返回OB_SUCCESS
return OB_SUCCESS;
}
int ObDASAsyncEraseP::process()
{
int ret = OB_SUCCESS;
ObDASDataEraseReq &req = arg_;
ObDataAccessService *das = NULL;