Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
画布下的乐园
oceanbase
提交
4ce250c3
O
oceanbase
项目概览
画布下的乐园
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4ce250c3
编写于
11月 03, 2022
作者:
L
LiuYoung00
提交者:
wangzelin.wzl
11月 03, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CP] close cursor when add fail
上级
aa32ee0f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
27 addition
and
0 deletion
+27
-0
src/sql/session/ob_sql_session_info.cpp
src/sql/session/ob_sql_session_info.cpp
+26
-0
src/sql/session/ob_sql_session_info.h
src/sql/session/ob_sql_session_info.h
+1
-0
未找到文件。
src/sql/session/ob_sql_session_info.cpp
浏览文件 @
4ce250c3
...
...
@@ -1218,6 +1218,7 @@ int ObSQLSessionInfo::add_cursor(pl::ObPLCursorInfo *cursor)
// open_cursors is 0 to indicate a special state, no limit is set
#define NEED_CHECK_SESS_OPEN_CURSORS_LIMIT(v) (0 == v ? false : true)
int
ret
=
OB_SUCCESS
;
bool
add_cursor_success
=
false
;
omt
::
ObTenantConfigGuard
tenant_config
(
TENANT_CONF
(
get_effective_tenant_id
()));
CK
(
tenant_config
.
is_valid
());
CK
(
OB_NOT_NULL
(
cursor
));
...
...
@@ -1251,6 +1252,7 @@ int ObSQLSessionInfo::add_cursor(pl::ObPLCursorInfo *cursor)
LOG_WARN
(
"fail insert ps id to hash map"
,
K
(
id
),
K
(
*
cursor
),
K
(
ret
));
}
else
{
cursor
->
set_id
(
id
);
add_cursor_success
=
true
;
if
(
lib
::
is_diagnose_info_enabled
())
{
EVENT_INC
(
SQL_OPEN_CURSORS_CURRENT
);
EVENT_INC
(
SQL_OPEN_CURSORS_CUMULATIVE
);
...
...
@@ -1258,6 +1260,30 @@ int ObSQLSessionInfo::add_cursor(pl::ObPLCursorInfo *cursor)
LOG_DEBUG
(
"ps cursor: add cursor"
,
K
(
ret
),
K
(
id
),
K
(
get_sessid
()));
}
}
if
(
!
add_cursor_success
&&
OB_NOT_NULL
(
cursor
))
{
int64_t
id
=
cursor
->
get_id
();
int
tmp_ret
=
close_cursor
(
cursor
);
ret
=
OB_SUCCESS
==
ret
?
tmp_ret
:
ret
;
if
(
OB_SUCCESS
!=
tmp_ret
)
{
LOG_WARN
(
"close cursor fail when add cursor to sesssion."
,
K
(
ret
),
K
(
id
),
K
(
get_sessid
()));
}
}
return
ret
;
}
int
ObSQLSessionInfo
::
close_cursor
(
ObPLCursorInfo
*&
cursor
)
{
int
ret
=
OB_SUCCESS
;
if
(
OB_NOT_NULL
(
cursor
))
{
int64_t
id
=
cursor
->
get_id
();
OZ
(
cursor
->
close
(
*
this
));
cursor
->~
ObPLCursorInfo
();
get_cursor_allocator
().
free
(
cursor
);
cursor
=
NULL
;
LOG_DEBUG
(
"close cursor"
,
K
(
ret
),
K
(
id
),
K
(
get_sessid
()));
}
else
{
LOG_DEBUG
(
"close cursor is null"
,
K
(
get_sessid
()));
}
return
ret
;
}
...
...
src/sql/session/ob_sql_session_info.h
浏览文件 @
4ce250c3
...
...
@@ -676,6 +676,7 @@ public:
pl
::
ObPLCursorInfo
*
get_cursor
(
int64_t
cursor_id
);
pl
::
ObDbmsCursorInfo
*
get_dbms_cursor
(
int64_t
cursor_id
);
int
add_cursor
(
pl
::
ObPLCursorInfo
*
cursor
);
int
close_cursor
(
pl
::
ObPLCursorInfo
*&
cursor
);
int
close_cursor
(
int64_t
cursor_id
);
int
make_cursor
(
pl
::
ObPLCursorInfo
*&
cursor
);
int
init_cursor_cache
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录