From 8d61732e97507140db6fa086472d4101f3952bd6 Mon Sep 17 00:00:00 2001 From: ly0 Date: Fri, 23 Jul 2021 01:15:13 +0800 Subject: [PATCH] patch some bug fix:part 1 --- deps/oblib/src/lib/oblog/ob_log.cpp | 1 - deps/oblib/src/rpc/frame/ob_req_queue_thread.cpp | 2 +- deps/oblib/src/rpc/obrpc/ob_rpc_session_handler.cpp | 2 +- src/observer/omt/ob_multi_tenant.cpp | 12 ++++-------- src/observer/omt/ob_multi_tenant.h | 7 +++++++ src/observer/omt/ob_tenant.cpp | 6 ++++++ src/observer/omt/ob_worker_pool.cpp | 2 ++ 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/deps/oblib/src/lib/oblog/ob_log.cpp b/deps/oblib/src/lib/oblog/ob_log.cpp index 3f39c3e68..e34af1256 100644 --- a/deps/oblib/src/lib/oblog/ob_log.cpp +++ b/deps/oblib/src/lib/oblog/ob_log.cpp @@ -864,7 +864,6 @@ void ObLogger::log_data(const char* mod_name, int32_t level, LogLocation locatio last_msg_time = e_ts - b_ts; } } - this_routine::check(); } void ObLogger::rotate_log( diff --git a/deps/oblib/src/rpc/frame/ob_req_queue_thread.cpp b/deps/oblib/src/rpc/frame/ob_req_queue_thread.cpp index 59b0a760d..b0edad1fe 100644 --- a/deps/oblib/src/rpc/frame/ob_req_queue_thread.cpp +++ b/deps/oblib/src/rpc/frame/ob_req_queue_thread.cpp @@ -163,7 +163,7 @@ void ObReqQueue::loop() "wait finish, remain %ld task", "qsize", queue_.size()); - } else if (0 == queue_.size()) { + } else if (0 != queue_.size()) { LOG_INFO("exiting queue thread and wait remain finish"); // Process remains if we should wait until all task has been // processed before exiting this thread. Previous return code diff --git a/deps/oblib/src/rpc/obrpc/ob_rpc_session_handler.cpp b/deps/oblib/src/rpc/obrpc/ob_rpc_session_handler.cpp index 8961e5009..18b8b0e5b 100644 --- a/deps/oblib/src/rpc/obrpc/ob_rpc_session_handler.cpp +++ b/deps/oblib/src/rpc/obrpc/ob_rpc_session_handler.cpp @@ -90,7 +90,7 @@ int ObRpcSessionHandler::prepare_for_next_request(int64_t sessid) wait_object.thid_ = get_itid(); wait_object.req_ = NULL; - if (wait_object.thid_ < 0 || wait_object.thid_ >= MAX_COND_COUNT) { + if (wait_object.thid_ < 0) { ret = OB_ERR_UNEXPECTED; LOG_WARN("Thread id no valid", K(ret), "thread id", wait_object.thid_); } else { diff --git a/src/observer/omt/ob_multi_tenant.cpp b/src/observer/omt/ob_multi_tenant.cpp index 0b8a3dacd..ac37e58da 100644 --- a/src/observer/omt/ob_multi_tenant.cpp +++ b/src/observer/omt/ob_multi_tenant.cpp @@ -155,10 +155,8 @@ int ObMultiTenant::init(ObAddr myaddr, double node_quota, int64_t times_of_worke myaddr_ = myaddr; node_quota_ = node_quota; - const int64_t total_reserved_quota = static_cast( - GCONF.system_cpu_quota + GCONF.election_cpu_quota + GCONF.user_location_cpu_quota() + - GCONF.sys_location_cpu_quota() + GCONF.root_location_cpu_quota() + GCONF.core_location_cpu_quota() + - EXT_LOG_TENANT_CPU + OB_MONITOR_CPU + OB_SVR_BLACKLIST_CPU); + const int64_t total_reserved_quota + = static_cast(VIRTUAL_TENANTS_CPU_RESERVED_QUOTA); int64_t init_workers_cnt = (static_cast(node_quota) + static_cast(GCONF.server_cpu_quota_min)) * DEFAULT_TIMES_OF_WORKERS + @@ -732,10 +730,8 @@ int ObMultiTenant::get_tenant_cpu(const uint64_t tenant_id, double& min_cpu, dou void ObMultiTenant::set_workers_per_cpu(int64_t v) { times_of_workers_ = v; - const int64_t total_reserved_quota = static_cast( - GCONF.system_cpu_quota + GCONF.election_cpu_quota + GCONF.user_location_cpu_quota() + - GCONF.sys_location_cpu_quota() + GCONF.root_location_cpu_quota() + GCONF.core_location_cpu_quota() + - EXT_LOG_TENANT_CPU + OB_MONITOR_CPU + OB_SVR_BLACKLIST_CPU); + const int64_t total_reserved_quota + = static_cast(VIRTUAL_TENANTS_CPU_RESERVED_QUOTA); auto max_workers_cnt = static_cast(node_quota_) * times_of_workers_ + total_reserved_quota * static_cast(quota2token_) + static_cast(node_quota_) * 16; diff --git a/src/observer/omt/ob_multi_tenant.h b/src/observer/omt/ob_multi_tenant.h index bcd0802e5..a0620387b 100644 --- a/src/observer/omt/ob_multi_tenant.h +++ b/src/observer/omt/ob_multi_tenant.h @@ -31,6 +31,13 @@ class ObRequest; } namespace omt { +#define VIRTUAL_TENANTS_CPU_RESERVED_QUOTA \ + (GCONF.system_cpu_quota \ + + GCONF.election_cpu_quota \ + + GCONF.user_location_cpu_quota() + GCONF.sys_location_cpu_quota() \ + + GCONF.root_location_cpu_quota() + GCONF.core_location_cpu_quota() \ + + EXT_LOG_TENANT_CPU + OB_MONITOR_CPU \ + + OB_SVR_BLACKLIST_CPU + OB_DATA_CPU + OB_DTL_CPU + OB_RS_CPU + OB_DIAG_CPU) struct ObCtxMemConfig { ObCtxMemConfig() : ctx_id_(0), idle_size_(0) diff --git a/src/observer/omt/ob_tenant.cpp b/src/observer/omt/ob_tenant.cpp index 7220bcf6f..164ea4d64 100644 --- a/src/observer/omt/ob_tenant.cpp +++ b/src/observer/omt/ob_tenant.cpp @@ -403,6 +403,9 @@ int ObTenant::init() LOG_ERROR("tenant base init failed", K_(id), K(ret)); } } + if (OB_SUCCESS != ret && nullptr != multi_level_queue_) { + common::ob_delete(multi_level_queue_); + } return ret; } @@ -525,6 +528,9 @@ void ObTenant::destroy() LOG_WARN("remove tenant cgroup failed", K(tmp_ret), K_(id)); } ObTenantBase::destory(); + if (nullptr != multi_level_queue_) { + common::ob_delete(multi_level_queue_); + } } void ObTenant::set_unit_max_cpu(double cpu) diff --git a/src/observer/omt/ob_worker_pool.cpp b/src/observer/omt/ob_worker_pool.cpp index cab99acd6..8b0c28c59 100644 --- a/src/observer/omt/ob_worker_pool.cpp +++ b/src/observer/omt/ob_worker_pool.cpp @@ -89,6 +89,8 @@ ObThWorker* ObWorkerPool::alloc() worker = nullptr; LOG_ERROR("create worker fail", K(ret)); } + } else { + LOG_ERROR("worker cnt larger than max cnt", K(worker_cnt_), K(max_cnt_)); } } return worker;