fix bug: use sqc handler after free
This commit is contained in:
@ -112,15 +112,18 @@ int ObInitSqcP::process()
|
|||||||
UNSET_INTERRUPTABLE(arg.sqc_.get_interrupt_id().px_interrupt_id_);
|
UNSET_INTERRUPTABLE(arg.sqc_.get_interrupt_id().px_interrupt_id_);
|
||||||
unregister_interrupt_ = false;
|
unregister_interrupt_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (is_schema_error(ret)) {
|
||||||
|
ObInterruptUtil::update_schema_error_code(&(sqc_handler->get_exec_ctx()), ret);
|
||||||
|
}
|
||||||
|
|
||||||
int report_ret = OB_SUCCESS;
|
int report_ret = OB_SUCCESS;
|
||||||
|
// DO NOT use sqc_handler after release_handler!!!
|
||||||
ObPxSqcHandler::release_handler(sqc_handler, report_ret);
|
ObPxSqcHandler::release_handler(sqc_handler, report_ret);
|
||||||
arg_.sqc_handler_ = nullptr;
|
arg_.sqc_handler_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
if (OB_SUCCESS != ret && is_schema_error(ret) && OB_NOT_NULL(sqc_handler)) {
|
|
||||||
ObInterruptUtil::update_schema_error_code(&(sqc_handler->get_exec_ctx()), ret);
|
|
||||||
}
|
|
||||||
// 非rpc框架的错误内容设置到response消息中
|
// 非rpc框架的错误内容设置到response消息中
|
||||||
// rpc框架的错误码在process中返回OB_SUCCESS
|
// rpc框架的错误码在process中返回OB_SUCCESS
|
||||||
result_.rc_ = ret;
|
result_.rc_ = ret;
|
||||||
|
|||||||
Reference in New Issue
Block a user