Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
oceanbase
oceanbase
提交
318e2623
O
oceanbase
项目概览
oceanbase
/
oceanbase
8 个月 前同步成功
通知
260
Star
6084
Fork
1301
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
318e2623
编写于
4月 23, 2024
作者:
O
obdev
提交者:
ob-robot
4月 23, 2024
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CP] add MTL_WAIT for tenant_session_mgr
上级
dca11e26
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
2 deletion
+18
-2
src/observer/omt/ob_multi_tenant.cpp
src/observer/omt/ob_multi_tenant.cpp
+1
-1
src/sql/session/ob_sql_session_mgr.cpp
src/sql/session/ob_sql_session_mgr.cpp
+14
-1
src/sql/session/ob_sql_session_mgr.h
src/sql/session/ob_sql_session_mgr.h
+3
-0
未找到文件。
src/observer/omt/ob_multi_tenant.cpp
浏览文件 @
318e2623
...
...
@@ -552,7 +552,7 @@ int ObMultiTenant::init(ObAddr myaddr,
MTL_BIND2
(
server_obj_pool_mtl_new
<
ObTableScanIterator
>
,
nullptr
,
nullptr
,
nullptr
,
nullptr
,
server_obj_pool_mtl_destroy
<
ObTableScanIterator
>
);
MTL_BIND2
(
mtl_new_default
,
ObTenantDirectLoadMgr
::
mtl_init
,
nullptr
,
nullptr
,
nullptr
,
mtl_destroy_default
);
MTL_BIND2
(
ObDetectManager
::
mtl_new
,
ObDetectManager
::
mtl_init
,
nullptr
,
nullptr
,
nullptr
,
ObDetectManager
::
mtl_destroy
);
MTL_BIND2
(
ObTenantSQLSessionMgr
::
mtl_new
,
ObTenantSQLSessionMgr
::
mtl_init
,
nullptr
,
nullptr
,
nullptr
,
ObTenantSQLSessionMgr
::
mtl_destroy
);
MTL_BIND2
(
ObTenantSQLSessionMgr
::
mtl_new
,
ObTenantSQLSessionMgr
::
mtl_init
,
nullptr
,
nullptr
,
ObTenantSQLSessionMgr
::
mtl_wait
,
ObTenantSQLSessionMgr
::
mtl_destroy
);
MTL_BIND2
(
mtl_new_default
,
ObDTLIntermResultManager
::
mtl_init
,
ObDTLIntermResultManager
::
mtl_start
,
ObDTLIntermResultManager
::
mtl_stop
,
ObDTLIntermResultManager
::
mtl_wait
,
ObDTLIntermResultManager
::
mtl_destroy
);
if
(
GCONF
.
_enable_new_sql_nio
&&
GCONF
.
_enable_tenant_sql_net_thread
)
{
...
...
src/sql/session/ob_sql_session_mgr.cpp
浏览文件 @
318e2623
...
...
@@ -96,7 +96,7 @@ int64_t ObTenantSQLSessionMgr::SessionPool::count() const
}
ObTenantSQLSessionMgr
::
ObTenantSQLSessionMgr
(
const
int64_t
tenant_id
)
:
tenant_id_
(
tenant_id
),
:
tenant_id_
(
tenant_id
),
count_
(
0
),
session_allocator_
(
lib
::
ObMemAttr
(
tenant_id
,
"SQLSessionInfo"
),
MTL_CPU_COUNT
(),
4
)
{}
...
...
@@ -137,6 +137,16 @@ int ObTenantSQLSessionMgr::mtl_init(ObTenantSQLSessionMgr *&t_session_mgr)
return
ret
;
}
void
ObTenantSQLSessionMgr
::
mtl_wait
(
ObTenantSQLSessionMgr
*&
t_session_mgr
)
{
while
(
t_session_mgr
->
count
()
!=
0
)
{
LOG_WARN_RET
(
OB_NEED_RETRY
,
"tenant session mgr should be empty"
,
K
(
t_session_mgr
->
count
()));
usleep
(
1000
*
1000
);
}
LOG_INFO
(
"success to wait tenant session mgr"
);
}
void
ObTenantSQLSessionMgr
::
mtl_destroy
(
ObTenantSQLSessionMgr
*&
t_session_mgr
)
{
if
(
nullptr
!=
t_session_mgr
)
{
...
...
@@ -155,6 +165,7 @@ ObSQLSessionInfo *ObTenantSQLSessionMgr::alloc_session()
OX
(
session
=
op_instance_alloc_args
(
&
session_allocator_
,
ObSQLSessionInfo
,
tenant_id_
));
OX
(
ATOMIC_FAA
(
&
count_
,
1
));
}
OV
(
OB_NOT_NULL
(
session
));
OX
(
session
->
set_tenant_session_mgr
(
this
));
...
...
@@ -183,6 +194,7 @@ void ObTenantSQLSessionMgr::free_session(ObSQLSessionInfo *session)
}
if
(
OB_NOT_NULL
(
session
))
{
OX
(
op_free
(
session
));
OX
(
ATOMIC_FAA
(
&
count_
,
-
1
));
OX
(
session
=
NULL
);
}
}
...
...
@@ -201,6 +213,7 @@ void ObTenantSQLSessionMgr::clean_session_pool()
OX
(
session_pool_
.
pop_session
(
session
));
if
(
OB_NOT_NULL
(
session
))
{
OX
(
op_free
(
session
));
OX
(
ATOMIC_FAA
(
&
count_
,
-
1
));
OX
(
session
=
NULL
);
}
}
...
...
src/sql/session/ob_sql_session_mgr.h
浏览文件 @
318e2623
...
...
@@ -378,10 +378,12 @@ public:
void
destroy
();
static
int
mtl_new
(
ObTenantSQLSessionMgr
*&
tenant_session_mgr
);
static
int
mtl_init
(
ObTenantSQLSessionMgr
*&
tenant_session_mgr
);
static
void
mtl_wait
(
ObTenantSQLSessionMgr
*&
tenant_session_mgr
);
static
void
mtl_destroy
(
ObTenantSQLSessionMgr
*&
tenant_session_mgr
);
ObSQLSessionInfo
*
alloc_session
();
void
free_session
(
ObSQLSessionInfo
*
session
);
void
clean_session_pool
();
int64_t
count
()
const
{
return
ATOMIC_LOAD
(
&
count_
);
}
private:
class
SessionPool
{
...
...
@@ -404,6 +406,7 @@ private:
private:
const
int64_t
tenant_id_
;
SessionPool
session_pool_
;
int64_t
count_
;
ObFixedClassAllocator
<
ObSQLSessionInfo
>
session_allocator_
;
DISALLOW_COPY_AND_ASSIGN
(
ObTenantSQLSessionMgr
);
};
// end of class ObSQLSessionMgr
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录