Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
caoersss
oceanbase
提交
979383c3
O
oceanbase
项目概览
caoersss
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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 搜索 >>
提交
979383c3
编写于
7月 20, 2022
作者:
O
obdev
提交者:
wangzelin.wzl
7月 20, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CP] optimize large trans ctx limitation
上级
b4bfa011
变更
6
展开全部
显示空白变更内容
内联
并排
Showing
6 changed file
with
216 addition
and
133 deletion
+216
-133
deps/oblib/src/lib/utility/ob_tracepoint.h
deps/oblib/src/lib/utility/ob_tracepoint.h
+1
-1
src/share/parameter/ob_parameter_seed.ipp
src/share/parameter/ob_parameter_seed.ipp
+4
-0
src/storage/transaction/ob_trans_define.cpp
src/storage/transaction/ob_trans_define.cpp
+34
-21
src/storage/transaction/ob_trans_define.h
src/storage/transaction/ob_trans_define.h
+10
-3
src/storage/transaction/ob_trans_part_ctx.cpp
src/storage/transaction/ob_trans_part_ctx.cpp
+165
-105
src/storage/transaction/ob_trans_part_ctx.h
src/storage/transaction/ob_trans_part_ctx.h
+2
-3
未找到文件。
deps/oblib/src/lib/utility/ob_tracepoint.h
浏览文件 @
979383c3
...
...
@@ -509,13 +509,13 @@ public:
EN_PARTICIPANTS_SIZE_OVERFLOW
=
275
,
EN_UNDO_ACTIONS_SIZE_OVERFLOW
=
276
,
EN_PART_PLUS_UNDO_OVERFLOW
=
277
,
EN_HANDLE_PREPARE_MESSAGE_EAGAIN
=
278
,
EN_PREVENT_SYNC_REPORT
=
360
,
EN_PREVENT_ASYNC_REPORT
=
361
,
EN_LOG_IDS_COUNT_ERROR
=
363
,
// DDL related 500-550
EN_SUBMIT_INDEX_TASK_ERROR_BEFORE_STAT_RECORD
=
503
,
EN_SUBMIT_INDEX_TASK_ERROR_AFTER_STAT_RECORD
=
504
,
...
...
src/share/parameter/ob_parameter_seed.ipp
浏览文件 @
979383c3
...
...
@@ -1016,6 +1016,10 @@ DEF_BOOL(enable_election_group, OB_CLUSTER_PARAMETER, "True",
"specifies whether election group is turned on. "
"Value: True:turned on; False: turned off",
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
DEF_BOOL(_enable_trans_ctx_size_limit, OB_TENANT_PARAMETER, "True",
"specifies whether trans ctx size limit is turned on or not. "
"Value: True:turned on; False: turned off",
ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
// Tablet config
DEF_CAP_WITH_CHECKER(tablet_size, OB_CLUSTER_PARAMETER, "128M", common::ObConfigTabletSizeChecker,
...
...
src/storage/transaction/ob_trans_define.cpp
浏览文件 @
979383c3
...
...
@@ -1419,34 +1419,47 @@ int ObTransDesc::merge_participants(const common::ObPartitionArray& participants
return
ret
;
}
#ifdef ERRSIM
#define INJECT_PARTICIPANTS_OVERFLOW_ERRSIM \
do { \
if (OB_FAIL(E(EventTable::EN_PARTICIPANTS_SIZE_OVERFLOW) OB_SUCCESS)) { \
OB_MAX_TRANS_SERIALIZE_SIZE = 1500; \
OB_MIN_REDO_LOG_SERIALIZE_SIZE = 500; \
} else if (OB_FAIL(E(EventTable::EN_PART_PLUS_UNDO_OVERFLOW) OB_SUCCESS)) { \
OB_MAX_TRANS_SERIALIZE_SIZE = 7500; \
OB_MIN_REDO_LOG_SERIALIZE_SIZE = 500; \
} \
\
transaction::OB_MAX_UNDO_ACTION_SERIALIZE_SIZE = OB_MAX_TRANS_SERIALIZE_SIZE - OB_MIN_REDO_LOG_SERIALIZE_SIZE; \
\
TRANS_LOG(INFO, \
"ERRSIM modify trans ctx serialize size ", \
K(OB_MAX_TRANS_SERIALIZE_SIZE), \
K(OB_MIN_REDO_LOG_SERIALIZE_SIZE), \
K(transaction::OB_MAX_UNDO_ACTION_SERIALIZE_SIZE)); \
\
ret = OB_SUCCESS; \
} while (false);
#else
#define INJECT_PARTICIPANTS_OVERFLOW_ERRSIM
#endif
int
ObTransDesc
::
check_participants_size
()
{
int
ret
=
OB_SUCCESS
;
#ifdef ERRSIM
// test if this function can handle participants size overflow successfully
if
(
OB_FAIL
(
E
(
EventTable
::
EN_PARTICIPANTS_SIZE_OVERFLOW
)
OB_SUCCESS
))
{
OB_MAX_TRANS_SERIALIZE_SIZE
=
1500
;
OB_MIN_REDO_LOG_SERIALIZE_SIZE
=
500
;
TRANS_LOG
(
INFO
,
"ERRSIM modify trans ctx serialize size for case 1 "
,
K
(
OB_MAX_TRANS_SERIALIZE_SIZE
),
K
(
OB_MIN_REDO_LOG_SERIALIZE_SIZE
));
}
else
if
(
OB_FAIL
(
E
(
EventTable
::
EN_PART_PLUS_UNDO_OVERFLOW
)
OB_SUCCESS
))
{
OB_MAX_TRANS_SERIALIZE_SIZE
=
7500
;
OB_MIN_REDO_LOG_SERIALIZE_SIZE
=
500
;
TRANS_LOG
(
INFO
,
"ERRSIM modify trans ctx serialize size for case 2 "
,
K
(
OB_MAX_TRANS_SERIALIZE_SIZE
),
K
(
OB_MIN_REDO_LOG_SERIALIZE_SIZE
));
}
OB_MAX_UNDO_ACTION_SERIALIZE_SIZE
=
OB_MAX_TRANS_SERIALIZE_SIZE
-
OB_MIN_REDO_LOG_SERIALIZE_SIZE
;
ret
=
OB_SUCCESS
;
#endif
INJECT_PARTICIPANTS_OVERFLOW_ERRSIM
int64_t
participants_size
=
participants_
.
get_serialize_size
();
if
(
participants_size
>
OB_MAX_TRANS_SERIALIZE_SIZE
)
{
ret
=
OB_SIZE_OVERFLOW
;
TRANS_LOG
(
WARN
,
"Participants are too large which may make dump trans state table failed."
,
KR
(
ret
),
K
(
participants_size
),
K
(
participants_
.
count
()),
K
(
OB_MAX_TRANS_SERIALIZE_SIZE
),
K
(
participants_
));
TRANS_LOG
(
WARN
,
"Participants are too large which may make dump trans state table failed."
,
KR
(
ret
),
K
(
participants_size
),
K
(
participants_
.
count
()),
K
(
OB_MAX_TRANS_SERIALIZE_SIZE
),
K
(
participants_
));
}
return
ret
;
}
...
...
src/storage/transaction/ob_trans_define.h
浏览文件 @
979383c3
...
...
@@ -76,10 +76,17 @@ static int64_t OB_MIN_REDO_LOG_SERIALIZE_SIZE = 131072;
static
int64_t
OB_MAX_TRANS_SERIALIZE_SIZE
=
common
::
OB_MAX_VARCHAR_LENGTH
-
10
*
1024
;
// The participants and undo actions share the last storage space
static
int64_t
OB_MAX_UNDO_ACTION_SERIALIZE_SIZE
=
OB_MAX_TRANS_SERIALIZE_SIZE
-
OB_MIN_REDO_LOG_SERIALIZE_SIZE
;
static
int64_t
OB_MAX_UNDO_ACTION_SERIALIZE_SIZE
=
OB_MAX_TRANS_SERIALIZE_SIZE
-
OB_MIN_REDO_LOG_SERIALIZE_SIZE
;
class
ObTransErrsim
{
struct
UnuseUndoSerializeSize
{
UnuseUndoSerializeSize
()
{
UNUSED
(
OB_MAX_UNDO_ACTION_SERIALIZE_SIZE
);
}
};
class
ObTransErrsim
{
public:
static
inline
bool
is_memory_errsim
()
{
...
...
src/storage/transaction/ob_trans_part_ctx.cpp
浏览文件 @
979383c3
此差异已折叠。
点击以展开。
src/storage/transaction/ob_trans_part_ctx.h
浏览文件 @
979383c3
...
...
@@ -405,8 +405,7 @@ public:
K
(
mt_ctx_
.
get_checksum_log_ts
()),
K_
(
is_changing_leader
),
K_
(
has_trans_state_log
),
K_
(
is_trans_state_sync_finished
),
K_
(
status
),
K_
(
same_leader_batch_partitions_count
),
K_
(
is_hazardous_ctx
),
K
(
mt_ctx_
.
get_callback_count
()),
K_
(
in_xa_prepare_state
),
K_
(
is_listener
),
K_
(
last_replayed_redo_log_id
),
K_
(
status
),
K_
(
is_xa_trans_prepared
),
K_
(
redo_log_id_serialize_size
),
K_
(
participants_serialize_size
),
K_
(
undo_serialize_size
));
K_
(
status
),
K_
(
is_xa_trans_prepared
));
public:
static
const
int64_t
OP_LOCAL_NUM
=
16
;
...
...
@@ -615,8 +614,8 @@ private:
bool
is_xa_last_empty_redo_log_
()
const
;
int
fake_kill_
(
const
int64_t
terminate_log_ts
);
int
kill_v2_
(
const
int64_t
terminate_log_ts
);
int
calc_serialize_size_and_set_redo_log_
(
const
int64_t
log_id
);
int
calc_serialize_size_and_set_participants_
(
const
ObPartitionArray
&
participants
);
int
do_calc_and_set_participants_
(
const
ObPartitionArray
&
participants
);
int
calc_serialize_size_and_set_undo_
(
const
int64_t
undo_to
,
const
int64_t
undo_from
);
private:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录