patch 4.0

This commit is contained in:
wangzelin.wzl
2022-10-24 10:34:53 +08:00
parent 4ad6e00ec3
commit 93a1074b0c
10533 changed files with 2588271 additions and 2299373 deletions

View File

@ -26,22 +26,21 @@ void ObSqlTaskHandler::reset()
sql_engine_ = NULL;
}
int ObSqlTaskHandler::init(observer::ObSrvTask* task, ObSql* sql_engine)
int ObSqlTaskHandler::init(observer::ObSrvTask *task, ObSql *sql_engine)
{
int ret = OB_SUCCESS;
if (NULL == task || NULL == sql_engine) {
ret = OB_INVALID_ARGUMENT;
;
ret = OB_INVALID_ARGUMENT;;
SQL_LOG(WARN, "invalid argument", K(ret), KP(task), KP(sql_engine));
} else {
set_task_mark();
//表示该task是Observer内部生成的task
task_ = task;
sql_engine_ = sql_engine;
}
return ret;
}
int ObSqlTaskHandler::process()
int ObSqlTaskHandler::run()
{
int ret = OB_SUCCESS;
if (NULL == task_) {
@ -51,12 +50,14 @@ int ObSqlTaskHandler::process()
ret = OB_ERR_UNEXPECTED;
SQL_LOG(WARN, "sql engine is null, unexpected error", K(ret), KP_(sql_engine));
} else {
ObSqlTask* task = static_cast<ObSqlTask*>(task_);
ObCurTraceId::set(task->get_trace_id());
if (OB_FAIL(sql_engine_->handle_batch_req(
task->get_msg_type(), task->get_req_ts(), task->get_buf(), task->get_size()))) {
SQL_LOG(WARN, "handle sql task failed", K(ret), K(*task));
}
// ObSqlTask *task = static_cast<ObSqlTask *>(task_);
// ObCurTraceId::set(task->get_trace_id());
// if (OB_FAIL(sql_engine_->handle_batch_req(task->get_msg_type(),
// task->get_req_ts(),
// task->get_buf(),
// task->get_size()))) {
// SQL_LOG(WARN, "handle sql task failed", K(ret), K(*task));
// }
}
return ret;
}
@ -68,22 +69,25 @@ void ObSqlTask::reset()
handler_.reset();
}
int ObSqlTask::init(
const int msg_type, const ObReqTimestamp& req_ts, const char* buf, const int64_t size, ObSql* sql_engine)
int ObSqlTask::init(const int msg_type, const ObReqTimestamp &req_ts, const char *buf, const int64_t size, ObSql *sql_engine)
{
int ret = OB_SUCCESS;
if (OB_ISNULL(buf) || OB_UNLIKELY(0 >= size) || OB_UNLIKELY(MAX_SQL_TASK_SIZE < size) || OB_ISNULL(sql_engine)) {
if (OB_ISNULL(buf) ||
OB_UNLIKELY(0 >= size) ||
OB_UNLIKELY(MAX_SQL_TASK_SIZE < size) ||
OB_ISNULL(sql_engine)) {
ret = OB_INVALID_ARGUMENT;
SQL_LOG(WARN, "invalid argument", K(ret), KP(buf), K(size), KP(sql_engine), K(msg_type));
} else if (OB_FAIL(handler_.init(this, sql_engine))) {
SQL_LOG(WARN, "ObSqlTaskHandler init failed", K(ret));
} else {
//与sql断连接的task区别开来,用于内存释放
set_type(ObRequest::OB_SQL_TASK);
msg_type_ = msg_type;
memcpy(buf_, buf, size);
size_ = size;
req_ts_ = req_ts;
ObCurTraceId::TraceId* trace_id = ObCurTraceId::get_trace_id();
ObCurTraceId::TraceId *trace_id = ObCurTraceId::get_trace_id();
if (OB_LIKELY(NULL != trace_id)) {
trace_id_.set(*trace_id);
}
@ -104,7 +108,7 @@ int ObSqlTaskFactory::init()
SQL_LOG(WARN, "init fixed queue failed", K(ret), K(fixed_num));
} else {
for (int64_t i = 0; OB_SUCC(ret) && i < fixed_num; i++) {
ObSqlTask* task = alloc_(common::OB_SERVER_TENANT_ID);
ObSqlTask *task = alloc_(common::OB_SERVER_TENANT_ID);
if (OB_ISNULL(task)) {
ret = OB_ALLOCATE_MEMORY_FAILED;
} else {
@ -121,24 +125,24 @@ int ObSqlTaskFactory::init()
void ObSqlTaskFactory::destroy()
{
ObSqlTask* task = NULL;
ObSqlTask *task = NULL;
while (OB_SUCCESS == fixed_queue_.pop(task)) {
free_(task);
task = NULL;
}
}
ObSqlTask* ObSqlTaskFactory::alloc(const uint64_t tenant_id)
ObSqlTask *ObSqlTaskFactory::alloc(const uint64_t tenant_id)
{
int ret = OB_SUCCESS;
ObSqlTask* task = NULL;
ObSqlTask *task = NULL;
if (OB_FAIL(fixed_queue_.pop(task))) {
task = alloc_(tenant_id);
}
return task;
}
void ObSqlTaskFactory::free(ObSqlTask* task)
void ObSqlTaskFactory::free(ObSqlTask *task)
{
int ret = OB_SUCCESS;
if (NULL != task) {
@ -152,24 +156,24 @@ void ObSqlTaskFactory::free(ObSqlTask* task)
}
}
ObSqlTaskFactory& ObSqlTaskFactory::get_instance()
ObSqlTaskFactory &ObSqlTaskFactory::get_instance()
{
static ObSqlTaskFactory instance;
return instance;
}
ObSqlTask* ObSqlTaskFactory::alloc_(const uint64_t tenant_id)
ObSqlTask *ObSqlTaskFactory::alloc_(const uint64_t tenant_id)
{
ObMemAttr memattr(tenant_id, "OB_SQL_TASK");
void* ptr = NULL;
ObSqlTask* task = NULL;
void *ptr = NULL;
ObSqlTask *task = NULL;
if (NULL != (ptr = ob_malloc(sizeof(ObSqlTask), memattr))) {
task = new (ptr) ObSqlTask();
task = new(ptr) ObSqlTask();
}
return task;
}
void ObSqlTaskFactory::free_(ObSqlTask* task)
void ObSqlTaskFactory::free_(ObSqlTask *task)
{
if (NULL != task) {
task->~ObSqlTask();