fix MysqlQueue threads creation bug
This commit is contained in:
@ -293,7 +293,7 @@ static int start_sql_nio_server(ObSqlNioServer *&sql_nio_server)
|
|||||||
net_thread_count = tenant_config->tenant_sql_net_thread_count;
|
net_thread_count = tenant_config->tenant_sql_net_thread_count;
|
||||||
}
|
}
|
||||||
if (0 == net_thread_count) {
|
if (0 == net_thread_count) {
|
||||||
ObTenant *tenant = (ObTenant *)MTL_CTX();
|
ObTenantBase *tenant = MTL_CTX();
|
||||||
net_thread_count = tenant ? std::max((int)tenant->unit_min_cpu(), 1) : 1;
|
net_thread_count = tenant ? std::max((int)tenant->unit_min_cpu(), 1) : 1;
|
||||||
}
|
}
|
||||||
sql_nio_server->get_nio()->set_run_wrapper(MTL_CTX());
|
sql_nio_server->get_nio()->set_run_wrapper(MTL_CTX());
|
||||||
@ -349,27 +349,29 @@ static int start_mysql_queue(QueueThread *&qthread)
|
|||||||
K(qthread->tg_id_));
|
K(qthread->tg_id_));
|
||||||
} else {
|
} else {
|
||||||
qthread->queue_.set_qhandler(&GCTX.net_frame_->get_deliver().get_qhandler());
|
qthread->queue_.set_qhandler(&GCTX.net_frame_->get_deliver().get_qhandler());
|
||||||
if (OB_FAIL(TG_SET_RUNNABLE_AND_START(qthread->tg_id_, qthread->thread_))) {
|
|
||||||
LOG_ERROR("fail to start qthread", K(ret), K(tenant_id), K(qthread->tg_id_));
|
|
||||||
} else {
|
|
||||||
int sql_thread_count = 0;
|
int sql_thread_count = 0;
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_id));
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_id));
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
sql_thread_count = tenant_config->tenant_sql_login_thread_count;
|
sql_thread_count = tenant_config->tenant_sql_login_thread_count;
|
||||||
}
|
}
|
||||||
if (0 == sql_thread_count) {
|
if (0 == sql_thread_count) {
|
||||||
ObTenant *tenant = (ObTenant *)MTL_CTX();
|
ObTenantBase *tenant = MTL_CTX();
|
||||||
sql_thread_count = tenant ? std::max((int)tenant->unit_min_cpu(), 1) : 1;
|
sql_thread_count = tenant ? std::max((int)tenant->unit_min_cpu(), 1) : 1;
|
||||||
}
|
}
|
||||||
if (OB_FAIL(qthread->set_thread_count(sql_thread_count))) {
|
|
||||||
|
if (OB_FAIL(TG_SET_RUNNABLE(qthread->tg_id_, qthread->thread_))) {
|
||||||
|
LOG_WARN("fail to set runnable", K(ret), K(tenant_id), K(qthread->tg_id_));
|
||||||
|
} else if (OB_FAIL(qthread->set_thread_count(sql_thread_count))) {
|
||||||
LOG_WARN("fail to set thread count", K(ret), K(tenant_id), K(qthread->tg_id_));
|
LOG_WARN("fail to set thread count", K(ret), K(tenant_id), K(qthread->tg_id_));
|
||||||
|
} else if(OB_FAIL(TG_START(qthread->tg_id_))) {
|
||||||
|
LOG_ERROR("fail to start qthread", K(ret), K(tenant_id), K(qthread->tg_id_));
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("tenant mysql_queue mtl_start success", K(ret),
|
LOG_INFO("tenant mysql_queue mtl_start success", K(ret),
|
||||||
K(tenant_id), K(qthread->tg_id_), K(sql_thread_count));
|
K(tenant_id), K(qthread->tg_id_), K(sql_thread_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2228,18 +2230,20 @@ int ObSrvNetworkFrame::reload_tenant_sql_thread_config(const uint64_t tenant_id)
|
|||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_id));
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_id));
|
||||||
ObTenant *tenant = NULL;
|
|
||||||
|
|
||||||
// reload tenant_sql_login_thread_count
|
// reload tenant_sql_login_thread_count
|
||||||
int sql_login_thread_count = 0;
|
int sql_login_thread_count = 0;
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
sql_login_thread_count = tenant_config->tenant_sql_login_thread_count;
|
sql_login_thread_count = tenant_config->tenant_sql_login_thread_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ObTenantBase *tenant = NULL;
|
||||||
|
MTL_SWITCH(tenant_id) {
|
||||||
if (0 == sql_login_thread_count) {
|
if (0 == sql_login_thread_count) {
|
||||||
ObTenant *tenant = (ObTenant *)MTL_CTX();
|
tenant = MTL_CTX();
|
||||||
sql_login_thread_count = tenant ? std::max((int)tenant->unit_min_cpu(), 1) : 1;
|
sql_login_thread_count = tenant ? std::max((int)tenant->unit_min_cpu(), 1) : 1;
|
||||||
}
|
}
|
||||||
MTL_SWITCH(tenant_id) {
|
|
||||||
QueueThread *mysql_queue = MTL(QueueThread *);
|
QueueThread *mysql_queue = MTL(QueueThread *);
|
||||||
if (OB_NOT_NULL(mysql_queue) && mysql_queue->set_thread_count(sql_login_thread_count)) {
|
if (OB_NOT_NULL(mysql_queue) && mysql_queue->set_thread_count(sql_login_thread_count)) {
|
||||||
LOG_WARN("update tenant_sql_login_thread_count fail", K(ret));
|
LOG_WARN("update tenant_sql_login_thread_count fail", K(ret));
|
||||||
@ -2250,11 +2254,12 @@ int ObSrvNetworkFrame::reload_tenant_sql_thread_config(const uint64_t tenant_id)
|
|||||||
// int sql_net_thread_count = 0;
|
// int sql_net_thread_count = 0;
|
||||||
// if (tenant_config.is_valid()) {
|
// if (tenant_config.is_valid()) {
|
||||||
// sql_net_thread_count = tenant_config->tenant_sql_net_thread_count;
|
// sql_net_thread_count = tenant_config->tenant_sql_net_thread_count;
|
||||||
|
|
||||||
|
// MTL_SWITCH(tenant_id) {
|
||||||
// if (0 == sql_net_thread_count) {
|
// if (0 == sql_net_thread_count) {
|
||||||
// sql_net_thread_count =
|
// sql_net_thread_count =
|
||||||
// NULL == tenant ? 1 : std::max((int)tenant->unit_min_cpu(), 1);
|
// NULL == tenant ? 1 : std::max((int)tenant->unit_min_cpu(), 1);
|
||||||
// }
|
// }
|
||||||
// MTL_SWITCH(tenant_id) {
|
|
||||||
// ObSqlNioServer *sql_nio_server = MTL(ObSqlNioServer *);
|
// ObSqlNioServer *sql_nio_server = MTL(ObSqlNioServer *);
|
||||||
// int cur_sql_net_thread_count =
|
// int cur_sql_net_thread_count =
|
||||||
// sql_nio_server->get_nio()->get_thread_count();
|
// sql_nio_server->get_nio()->get_thread_count();
|
||||||
|
Reference in New Issue
Block a user