Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
clmforever
oceanbase
提交
f2ba0d35
O
oceanbase
项目概览
clmforever
/
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,发现更多精彩内容 >>
提交
f2ba0d35
编写于
11月 07, 2022
作者:
S
simonjoylet
提交者:
wangzelin.wzl
11月 07, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
not keep ls handle and tablet handle in ddl redo log writer
上级
8202b78e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
22 deletion
+24
-22
src/storage/ddl/ob_ddl_redo_log_writer.cpp
src/storage/ddl/ob_ddl_redo_log_writer.cpp
+22
-19
src/storage/ddl/ob_ddl_redo_log_writer.h
src/storage/ddl/ob_ddl_redo_log_writer.h
+2
-3
未找到文件。
src/storage/ddl/ob_ddl_redo_log_writer.cpp
浏览文件 @
f2ba0d35
...
...
@@ -889,33 +889,21 @@ int ObDDLMacroBlockRedoWriter::remote_write_macro_redo(const ObAddr &leader_addr
ObDDLSSTableRedoWriter
::
ObDDLSSTableRedoWriter
()
:
is_inited_
(
false
),
remote_write_
(
false
),
start_log_ts_
(
0
),
ls_
handle_
(),
tablet_handle_
(),
ddl_redo_handle_
(),
leader_addr_
(),
leader_ls_id_
(),
tablet
_id_
(),
buffer_
(
nullptr
)
ls_
id_
(),
tablet_id_
(),
ddl_redo_handle_
(),
leader_addr_
(),
leader_ls
_id_
(),
buffer_
(
nullptr
)
{
}
int
ObDDLSSTableRedoWriter
::
init
(
const
ObLSID
&
ls_id
,
const
ObTabletID
&
tablet_id
)
{
int
ret
=
OB_SUCCESS
;
ObLS
*
ls
=
nullptr
;
ObLSService
*
ls_service
=
nullptr
;
bool
is_cache_hit
=
false
;
if
(
OB_UNLIKELY
(
is_inited_
))
{
ret
=
OB_INIT_TWICE
;
LOG_WARN
(
"ObDDLSSTableRedoWriter has been inited twice"
,
K
(
ret
));
}
else
if
(
OB_UNLIKELY
(
!
ls_id
.
is_valid
()
||
!
tablet_id
.
is_valid
()))
{
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid arguments"
,
K
(
ret
),
K
(
ls_id
),
K
(
tablet_id
));
}
else
if
(
OB_ISNULL
(
ls_service
=
MTL
(
ObLSService
*
)))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"ls service should not be null"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
ls_service
->
get_ls
(
ls_id
,
ls_handle_
,
ObLSGetMod
::
DDL_MOD
)))
{
LOG_WARN
(
"get ls failed"
,
K
(
ret
),
K
(
ls_id
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle_
.
get_ls
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"ls should not be null"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
ls
->
get_tablet
(
tablet_id
,
tablet_handle_
)))
{
LOG_WARN
(
"fail to get tablet handle"
,
K
(
ret
),
K
(
tablet_id
));
}
else
{
ls_id_
=
ls_id
;
tablet_id_
=
tablet_id
;
is_inited_
=
true
;
}
...
...
@@ -925,7 +913,9 @@ int ObDDLSSTableRedoWriter::init(const ObLSID &ls_id, const ObTabletID &tablet_i
int
ObDDLSSTableRedoWriter
::
start_ddl_redo
(
const
ObITable
::
TableKey
&
table_key
,
ObDDLKvMgrHandle
&
ddl_kv_mgr_handle
)
{
int
ret
=
OB_SUCCESS
;
ObLSHandle
ls_handle
;
ObLS
*
ls
=
nullptr
;
ObTabletHandle
tablet_handle
;
ObDDLStartLog
log
;
ddl_kv_mgr_handle
.
reset
();
int64_t
tmp_log_ts
=
0
;
...
...
@@ -937,13 +927,17 @@ int ObDDLSSTableRedoWriter::start_ddl_redo(const ObITable::TableKey &table_key,
LOG_WARN
(
"invalid arguments"
,
K
(
ret
),
K
(
table_key
));
}
else
if
(
OB_FAIL
(
log
.
init
(
table_key
,
GET_MIN_CLUSTER_VERSION
())))
{
LOG_WARN
(
"fail to init DDLStartLog"
,
K
(
ret
),
K
(
table_key
),
"cluster_version"
,
GET_MIN_CLUSTER_VERSION
());
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle_
.
get_ls
()))
{
}
else
if
(
OB_FAIL
(
MTL
(
ObLSService
*
)
->
get_ls
(
ls_id_
,
ls_handle
,
ObLSGetMod
::
DDL_MOD
)))
{
LOG_WARN
(
"get ls failed"
,
K
(
ret
),
K
(
ls_id_
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle
.
get_ls
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"ls should not be null"
,
K
(
ret
),
K
(
table_key
));
}
else
if
(
OB_FAIL
(
ls
->
get_tablet
(
tablet_id_
,
tablet_handle
,
ObTabletCommon
::
NO_CHECK_GET_TABLET_TIMEOUT_US
)))
{
LOG_WARN
(
"get tablet handle failed"
,
K
(
ret
),
K
(
ls_id_
),
K
(
tablet_id_
));
}
else
if
(
OB_FAIL
(
ObDDLRedoLogWriter
::
get_instance
().
write_ddl_start_log
(
log
,
ls
->
get_log_handler
(),
tmp_log_ts
)))
{
LOG_WARN
(
"fail to write ddl start log"
,
K
(
ret
),
K
(
table_key
));
}
else
if
(
FALSE_IT
(
set_start_log_ts
(
tmp_log_ts
)))
{
}
else
if
(
OB_FAIL
(
tablet_handle
_
.
get_obj
()
->
get_ddl_kv_mgr
(
ddl_kv_mgr_handle
,
true
/*try_create*/
)))
{
}
else
if
(
OB_FAIL
(
tablet_handle
.
get_obj
()
->
get_ddl_kv_mgr
(
ddl_kv_mgr_handle
,
true
/*try_create*/
)))
{
LOG_WARN
(
"create ddl kv mgr failed"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
ddl_kv_mgr_handle
.
get_obj
()
->
ddl_start
(
table_key
,
get_start_log_ts
(),
log
.
get_cluster_version
())))
{
LOG_WARN
(
"start ddl log failed"
,
K
(
ret
),
K
(
table_key
),
K
(
start_log_ts_
),
K
(
log
));
...
...
@@ -954,6 +948,7 @@ int ObDDLSSTableRedoWriter::start_ddl_redo(const ObITable::TableKey &table_key,
int
ObDDLSSTableRedoWriter
::
write_redo_log
(
const
ObDDLMacroBlockRedoInfo
&
redo_info
,
const
blocksstable
::
MacroBlockId
&
macro_block_id
)
{
int
ret
=
OB_SUCCESS
;
ObLSHandle
ls_handle
;
ObLS
*
ls
=
nullptr
;
const
int64_t
BUF_SIZE
=
2
*
1024
*
1024
+
16
*
1024
;
if
(
OB_UNLIKELY
(
!
is_inited_
))
{
...
...
@@ -962,7 +957,9 @@ int ObDDLSSTableRedoWriter::write_redo_log(const ObDDLMacroBlockRedoInfo &redo_i
}
else
if
(
OB_UNLIKELY
(
!
redo_info
.
is_valid
()))
{
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid arguments"
,
K
(
ret
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle_
.
get_ls
()))
{
}
else
if
(
OB_FAIL
(
MTL
(
ObLSService
*
)
->
get_ls
(
ls_id_
,
ls_handle
,
ObLSGetMod
::
DDL_MOD
)))
{
LOG_WARN
(
"get ls failed"
,
K
(
ret
),
K
(
ls_id_
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle
.
get_ls
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"ls should not be null"
,
K
(
ret
));
}
else
if
(
nullptr
==
buffer_
&&
OB_ISNULL
(
buffer_
=
static_cast
<
char
*>
(
ob_malloc
(
BUF_SIZE
))))
{
...
...
@@ -1028,6 +1025,7 @@ int ObDDLSSTableRedoWriter::write_prepare_log(const ObITable::TableKey &table_ke
DEBUG_SYNC
(
BEFORE_DDL_WRITE_PREPARE_LOG
);
#endif
prepare_log_ts
=
0
;
ObLSHandle
ls_handle
;
ObLS
*
ls
=
nullptr
;
ObDDLPrepareLog
log
;
ObDDLCommitLogHandle
handle
;
...
...
@@ -1039,7 +1037,9 @@ int ObDDLSSTableRedoWriter::write_prepare_log(const ObITable::TableKey &table_ke
LOG_WARN
(
"invalid arguments"
,
K
(
ret
),
K
(
table_key
),
K
(
start_log_ts_
));
}
else
if
(
OB_FAIL
(
log
.
init
(
table_key
,
get_start_log_ts
())))
{
LOG_WARN
(
"fail to init DDLCommitLog"
,
K
(
ret
),
K
(
table_key
),
K
(
start_log_ts_
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle_
.
get_ls
()))
{
}
else
if
(
OB_FAIL
(
MTL
(
ObLSService
*
)
->
get_ls
(
ls_id_
,
ls_handle
,
ObLSGetMod
::
DDL_MOD
)))
{
LOG_WARN
(
"get ls failed"
,
K
(
ret
),
K
(
ls_id_
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle
.
get_ls
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"ls should not be null"
,
K
(
ret
),
K
(
table_key
));
}
else
if
(
!
remote_write_
)
{
...
...
@@ -1081,6 +1081,7 @@ int ObDDLSSTableRedoWriter::write_commit_log(const ObITable::TableKey &table_key
const
int64_t
prepare_log_ts
)
{
int
ret
=
OB_SUCCESS
;
ObLSHandle
ls_handle
;
ObLS
*
ls
=
nullptr
;
ObDDLCommitLog
log
;
ObDDLCommitLogHandle
handle
;
...
...
@@ -1092,7 +1093,9 @@ int ObDDLSSTableRedoWriter::write_commit_log(const ObITable::TableKey &table_key
LOG_WARN
(
"invalid arguments"
,
K
(
ret
),
K
(
table_key
),
K
(
start_log_ts_
),
K
(
prepare_log_ts
));
}
else
if
(
OB_FAIL
(
log
.
init
(
table_key
,
get_start_log_ts
(),
prepare_log_ts
)))
{
LOG_WARN
(
"fail to init DDLCommitLog"
,
K
(
ret
),
K
(
table_key
),
K
(
start_log_ts_
),
K
(
prepare_log_ts
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle_
.
get_ls
()))
{
}
else
if
(
OB_FAIL
(
MTL
(
ObLSService
*
)
->
get_ls
(
ls_id_
,
ls_handle
,
ObLSGetMod
::
DDL_MOD
)))
{
LOG_WARN
(
"get ls failed"
,
K
(
ret
),
K
(
ls_id_
));
}
else
if
(
OB_ISNULL
(
ls
=
ls_handle
.
get_ls
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"ls should not be null"
,
K
(
ret
),
K
(
table_key
));
}
else
if
(
!
remote_write_
)
{
...
...
src/storage/ddl/ob_ddl_redo_log_writer.h
浏览文件 @
f2ba0d35
...
...
@@ -256,12 +256,11 @@ private:
bool
is_inited_
;
bool
remote_write_
;
int64_t
start_log_ts_
;
ObLSHandle
ls_handle
_
;
ObTablet
Handle
tablet_handle
_
;
share
::
ObLSID
ls_id
_
;
ObTablet
ID
tablet_id
_
;
ObDDLRedoLogHandle
ddl_redo_handle_
;
ObAddr
leader_addr_
;
share
::
ObLSID
leader_ls_id_
;
ObTabletID
tablet_id_
;
char
*
buffer_
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录