add create worker forcely for each group
This commit is contained in:
@ -337,7 +337,7 @@ void ObResourceGroup::update_queue_size()
|
||||
req_queue_.set_limit(common::ObServerConfig::get_instance().tenant_task_queue_size);
|
||||
}
|
||||
|
||||
int ObResourceGroup::acquire_more_worker(int64_t num, int64_t &succ_num)
|
||||
int ObResourceGroup::acquire_more_worker(int64_t num, int64_t &succ_num, bool force)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObTenantSwitchGuard guard(tenant_);
|
||||
@ -347,7 +347,7 @@ int ObResourceGroup::acquire_more_worker(int64_t num, int64_t &succ_num)
|
||||
|
||||
while (OB_SUCC(ret) && need_num > succ_num) {
|
||||
ObThWorker *w = nullptr;
|
||||
if (OB_FAIL(create_worker(w, tenant_, group_id_, INT32_MAX, this))) {
|
||||
if (OB_FAIL(create_worker(w, tenant_, group_id_, INT32_MAX, force, this))) {
|
||||
LOG_WARN("create worker failed", K(ret));
|
||||
} else if (!workers_.add_last(&w->worker_node_)) {
|
||||
OB_ASSERT(false);
|
||||
@ -401,7 +401,7 @@ void ObResourceGroup::check_worker_count()
|
||||
const auto diff = min_worker_cnt() - workers_.get_size();
|
||||
token_change_ts_ = now;
|
||||
ATOMIC_STORE(&shrink_, false);
|
||||
acquire_more_worker(diff, succ_num);
|
||||
acquire_more_worker(diff, succ_num, /* force */ true);
|
||||
LOG_INFO("worker thread created", K(tenant_->id()), K(group_id_), K(token));
|
||||
} else if (OB_UNLIKELY(token > workers_.get_size())
|
||||
&& OB_LIKELY(ObMallocAllocator::get_instance()->get_tenant_remain(tenant_->id()) > ObMallocAllocator::get_instance()->get_tenant_limit(tenant_->id()) * 0.05)) {
|
||||
@ -1402,7 +1402,7 @@ void ObTenant::check_worker_count()
|
||||
const auto diff = min_worker_cnt() - workers_.get_size();
|
||||
token_change_ts_ = now;
|
||||
ATOMIC_STORE(&shrink_, false);
|
||||
acquire_more_worker(diff, succ_num);
|
||||
acquire_more_worker(diff, succ_num, /* force */ true);
|
||||
LOG_INFO("worker thread created", K(id_), K(token));
|
||||
} else if (OB_UNLIKELY(token > workers_.get_size())
|
||||
&& OB_LIKELY(ObMallocAllocator::get_instance()->get_tenant_remain(id_) > ObMallocAllocator::get_instance()->get_tenant_limit(id_) * 0.05)) {
|
||||
@ -1465,7 +1465,7 @@ int ObTenant::acquire_level_worker(int64_t num, int64_t &succ_num, int32_t level
|
||||
} else {
|
||||
while (OB_SUCC(ret) && need_num > succ_num) {
|
||||
ObThWorker *w = nullptr;
|
||||
if (OB_FAIL(create_worker(w, this, 0, level))) {
|
||||
if (OB_FAIL(create_worker(w, this, 0, level, true))) {
|
||||
LOG_WARN("create worker failed", K(ret));
|
||||
} else if (!nesting_workers_.add_last(&w->worker_node_)) {
|
||||
OB_ASSERT(false);
|
||||
@ -1489,7 +1489,7 @@ int ObTenant::acquire_level_worker(int64_t num, int64_t &succ_num, int32_t level
|
||||
}
|
||||
|
||||
// This interface is unnecessary after adding htap
|
||||
int ObTenant::acquire_more_worker(int64_t num, int64_t &succ_num)
|
||||
int ObTenant::acquire_more_worker(int64_t num, int64_t &succ_num, bool force)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
succ_num = 0;
|
||||
@ -1497,7 +1497,7 @@ int ObTenant::acquire_more_worker(int64_t num, int64_t &succ_num)
|
||||
ObTenantSwitchGuard guard(this);
|
||||
while (OB_SUCC(ret) && num > succ_num) {
|
||||
ObThWorker *w = nullptr;
|
||||
if (OB_FAIL(create_worker(w, this, 0, 0))) {
|
||||
if (OB_FAIL(create_worker(w, this, 0, 0, force))) {
|
||||
LOG_WARN("create worker failed", K(ret));
|
||||
} else if (!workers_.add_last(&w->worker_node_)) {
|
||||
OB_ASSERT(false);
|
||||
|
||||
Reference in New Issue
Block a user