Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
野花太放肆
oceanbase
提交
85c634e1
O
oceanbase
项目概览
野花太放肆
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
1
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 搜索 >>
提交
85c634e1
编写于
11月 03, 2021
作者:
H
hf0
提交者:
LINGuanRen
11月 03, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize get_clog_parent interface.
上级
0121cc45
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
33 addition
and
14 deletion
+33
-14
src/clog/ob_log_cascading_mgr.cpp
src/clog/ob_log_cascading_mgr.cpp
+4
-1
src/clog/ob_log_cascading_mgr.h
src/clog/ob_log_cascading_mgr.h
+4
-0
src/clog/ob_partition_log_service.cpp
src/clog/ob_partition_log_service.cpp
+17
-5
src/clog/ob_partition_log_service.h
src/clog/ob_partition_log_service.h
+2
-2
src/storage/ob_partition_migrator.cpp
src/storage/ob_partition_migrator.cpp
+1
-1
src/storage/ob_partition_service.cpp
src/storage/ob_partition_service.cpp
+3
-3
src/storage/ob_rebuild_scheduler.cpp
src/storage/ob_rebuild_scheduler.cpp
+1
-1
unittest/clog/mock_ob_partition_log_service.h
unittest/clog/mock_ob_partition_log_service.h
+1
-1
未找到文件。
src/clog/ob_log_cascading_mgr.cpp
浏览文件 @
85c634e1
...
...
@@ -229,7 +229,10 @@ int ObLogCascadingMgr::set_parent_(const common::ObAddr& new_parent_addr, const
}
else
{
state_mgr_
->
reset_need_rebuild
();
state_mgr_
->
reset_fetch_state
();
prev_parent_
=
parent_
;
if
(
parent_
.
is_valid
())
{
// update prev_parent by valid old parent
prev_parent_
=
parent_
;
}
parent_
=
new_parent
;
if
(
partition_reach_time_interval
(
60
*
1000
*
1000
,
update_parent_warn_time_
))
{
CLOG_LOG
(
INFO
,
...
...
src/clog/ob_log_cascading_mgr.h
浏览文件 @
85c634e1
...
...
@@ -98,6 +98,10 @@ public:
{
return
parent_
;
}
share
::
ObCascadMember
get_prev_parent
()
const
{
return
prev_parent_
;
}
common
::
ObAddr
get_parent_addr
()
const
{
return
parent_
.
get_server
();
...
...
src/clog/ob_partition_log_service.cpp
浏览文件 @
85c634e1
...
...
@@ -1319,7 +1319,7 @@ int ObPartitionLogService::get_leader(common::ObAddr& leader) const
return
ret
;
}
int
ObPartitionLogService
::
get_clog_parent
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
int
ObPartitionLogService
::
get_clog_parent
_for_migration
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
{
int
ret
=
OB_SUCCESS
;
RLockGuard
guard
(
lock_
);
...
...
@@ -1330,22 +1330,34 @@ int ObPartitionLogService::get_clog_parent(common::ObAddr& parent, int64_t& clus
parent
=
restore_mgr_
.
get_restore_leader
();
cluster_id
=
state_mgr_
.
get_self_cluster_id
();
}
else
{
const
bool
is_paxos_replica
=
ObReplicaTypeCheck
::
is_paxos_replica
(
mm_
.
get_replica_type
());
const
share
::
ObCascadMember
parent_member
=
cascading_mgr_
.
get_parent
();
const
share
::
ObCascadMember
prev_parent_member
=
cascading_mgr_
.
get_prev_parent
();
share
::
ObCascadMember
cascad_leader
;
(
void
)
state_mgr_
.
get_cascad_leader
(
cascad_leader
);
if
(
parent_member
.
is_valid
())
{
parent
=
parent_member
.
get_server
();
cluster_id
=
parent_member
.
get_cluster_id
();
}
else
{
}
else
if
(
!
is_paxos_replica
&&
prev_parent_member
.
is_valid
())
{
// prev_parent is preferred choice for non-paxos replica
parent
=
prev_parent_member
.
get_server
();
cluster_id
=
prev_parent_member
.
get_cluster_id
();
}
else
if
(
cascad_leader
.
is_valid
())
{
// returns corresponding leader when parent is invalid
share
::
ObCascadMember
cascad_leader
;
(
void
)
state_mgr_
.
get_cascad_leader
(
cascad_leader
);
parent
=
cascad_leader
.
get_server
();
cluster_id
=
cascad_leader
.
get_cluster_id
();
}
else
if
(
prev_parent_member
.
is_valid
())
{
// at last return prev_parent
parent
=
prev_parent_member
.
get_server
();
cluster_id
=
prev_parent_member
.
get_cluster_id
();
}
else
{
// it does not have valid parent
}
}
if
(
!
parent
.
is_valid
())
{
ret
=
OB_NEED_RETRY
;
}
CLOG_LOG
(
INFO
,
"get clog parent"
,
K
(
ret
),
K_
(
partition_key
),
K
(
parent
));
CLOG_LOG
(
INFO
,
"get clog parent"
,
K
(
ret
),
K_
(
partition_key
),
K
(
parent
)
,
K
(
cluster_id
)
);
return
ret
;
}
...
...
src/clog/ob_partition_log_service.h
浏览文件 @
85c634e1
...
...
@@ -249,7 +249,7 @@ public:
virtual
common
::
ObPartitionKey
get_partition_key
()
const
=
0
;
virtual
int
get_saved_base_storage_info
(
common
::
ObBaseStorageInfo
&
base_storage_info
)
const
=
0
;
virtual
int
get_leader
(
common
::
ObAddr
&
leader
)
const
=
0
;
virtual
int
get_clog_parent
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
=
0
;
virtual
int
get_clog_parent
_for_migration
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
=
0
;
virtual
int
change_leader
(
const
common
::
ObAddr
&
leader
,
common
::
ObTsWindows
&
changing_leader_windows
)
=
0
;
virtual
int
change_restore_leader
(
const
common
::
ObAddr
&
leader
)
=
0
;
virtual
int
check_and_set_restore_progress
()
=
0
;
...
...
@@ -523,7 +523,7 @@ public:
virtual
common
::
ObPartitionKey
get_partition_key
()
const
override
;
virtual
int
get_saved_base_storage_info
(
common
::
ObBaseStorageInfo
&
base_storage_info
)
const
override
;
virtual
int
get_leader
(
common
::
ObAddr
&
addr
)
const
override
;
virtual
int
get_clog_parent
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
override
;
virtual
int
get_clog_parent
_for_migration
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
;
virtual
int
change_leader
(
const
common
::
ObAddr
&
leader
,
common
::
ObTsWindows
&
changing_leader_windows
)
override
;
virtual
int
change_restore_leader
(
const
common
::
ObAddr
&
leader
)
override
;
virtual
int
check_and_set_restore_progress
()
override
;
...
...
src/storage/ob_partition_migrator.cpp
浏览文件 @
85c634e1
...
...
@@ -13261,7 +13261,7 @@ int ObMigrateGetLeaderUtil::get_clog_parent(clog::ObIPartitionLogService &log_se
ObAddr parent_src;
int64_t cluster_id = -1;
if (OB_FAIL(log_service.get_clog_parent(parent_src, cluster_id))) {
if (OB_FAIL(log_service.get_clog_parent
_for_migration
(parent_src, cluster_id))) {
STORAGE_LOG(WARN, "get parent addr failed", K(ret));
} else {
parent_info.src_addr_ = parent_src;
...
...
src/storage/ob_partition_service.cpp
浏览文件 @
85c634e1
...
...
@@ -13386,7 +13386,7 @@ int ObPartitionService::get_primary_cluster_migrate_src(const common::ObPartitio
ret = OB_ERR_UNEXPECTED;
LOG_WARN("log service should not be NULL", K(ret), K(pkey));
} else if (FALSE_IT(is_restore = partition->get_pg_storage().is_restore())) {
} else if (OB_FAIL(log_service->get_clog_parent(src_info.src_addr_, src_info.cluster_id_))) {
} else if (OB_FAIL(log_service->get_clog_parent
_for_migration
(src_info.src_addr_, src_info.cluster_id_))) {
if (OB_NEED_RETRY == ret) {
ret = OB_SUCCESS;
} else {
...
...
@@ -13463,7 +13463,7 @@ int ObPartitionService::get_standby_cluster_migrate_src(const common::ObPartitio
ret = OB_ERR_UNEXPECTED;
LOG_WARN("log service should not be NULL", K(ret), K(pkey));
} else if (ObRole::STANDBY_LEADER == role) {
if (OB_FAIL(log_service->get_clog_parent(src_info.src_addr_, src_info.cluster_id_))) {
if (OB_FAIL(log_service->get_clog_parent
_for_migration
(src_info.src_addr_, src_info.cluster_id_))) {
if (OB_NEED_RETRY == ret) {
ret = OB_SUCCESS;
} else {
...
...
@@ -13472,7 +13472,7 @@ int ObPartitionService::get_standby_cluster_migrate_src(const common::ObPartitio
} else if (OB_FAIL(add_migrate_src(src_info, src_set, src_array))) {
LOG_WARN("failed to add migrate src", K(ret), K(role), K(src_info), K(pkey));
} else {
LOG_INFO("get_clog_parent", K(src_info));
LOG_INFO("get_clog_parent
_for_migration
", K(src_info));
src_info.reset();
}
}
...
...
src/storage/ob_rebuild_scheduler.cpp
浏览文件 @
85c634e1
...
...
@@ -245,7 +245,7 @@ int ObRebuildReplicaTaskProducer::build_local_replica_info()
// skip
}
else
if
(
OB_FAIL
(
partition
->
get_pg_storage
().
get_pg_meta
(
pg_meta
)))
{
STORAGE_LOG
(
WARN
,
"failed to get pg meta"
,
K
(
ret
),
K
(
partition
->
get_partition_key
()));
}
else
if
(
OB_FAIL
(
partition
->
get_log_service
()
->
get_clog_parent
(
parent_addr
,
parent_cluster_id
)))
{
}
else
if
(
OB_FAIL
(
partition
->
get_log_service
()
->
get_clog_parent
_for_migration
(
parent_addr
,
parent_cluster_id
)))
{
STORAGE_LOG
(
WARN
,
"get parent addr failed"
,
K
(
ret
));
}
else
{
// now only consider memstore pecent 0 is D replica, and read-only replica in ofs mode.
...
...
unittest/clog/mock_ob_partition_log_service.h
浏览文件 @
85c634e1
...
...
@@ -528,7 +528,7 @@ public:
UNUSED
(
leader
);
return
common
::
OB_SUCCESS
;
}
virtual
int
get_clog_parent
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
virtual
int
get_clog_parent
_for_migration
(
common
::
ObAddr
&
parent
,
int64_t
&
cluster_id
)
const
{
UNUSED
(
parent
);
UNUSED
(
cluster_id
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录