Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kp22424
oceanbase
提交
27c68a2d
O
oceanbase
项目概览
kp22424
/
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 搜索 >>
提交
27c68a2d
编写于
12月 23, 2021
作者:
G
godyangfight
提交者:
LINGuanRen
12月 23, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix backup check disk is enough bug
上级
a65f0bda
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
81 addition
and
0 deletion
+81
-0
deps/oblib/src/lib/utility/ob_tracepoint.h
deps/oblib/src/lib/utility/ob_tracepoint.h
+1
-0
src/rootserver/ob_root_backup.cpp
src/rootserver/ob_root_backup.cpp
+76
-0
src/rootserver/ob_root_backup.h
src/rootserver/ob_root_backup.h
+4
-0
未找到文件。
deps/oblib/src/lib/utility/ob_tracepoint.h
浏览文件 @
27c68a2d
...
...
@@ -446,6 +446,7 @@ public:
EN_BACKUP_BACKUPSET_DO_SCHEDULE
=
184
,
EN_BACKUP_CHECK_BACKUP_POINT_EXIST
=
185
,
EN_STOP_TENANT_LOG_ARCHIVE_BACKUP
=
186
,
EN_BACKUP_SERVER_DISK_IS_FULL
=
188
,
// 下面请从201开始
EN_CHECK_STANDBY_CLUSTER_SCHEMA_CONDITION
=
201
,
EN_ALLOCATE_LOB_BUF_FAILED
=
202
,
...
...
src/rootserver/ob_root_backup.cpp
浏览文件 @
27c68a2d
...
...
@@ -671,6 +671,8 @@ int ObRootBackup::do_sys_tenant_backup(
}
else
{
if
(
OB_FAIL
(
add_backup_info_lock
(
info
,
updater
,
info_manager
)))
{
LOG_WARN
(
"failed to add backup info lock"
,
K
(
ret
),
K
(
info
));
}
else
if
(
OB_FAIL
(
check_server_disk_stat
(
info
,
updater
.
get_trans
())))
{
LOG_WARN
(
"failed to check server disk stat"
,
K
(
ret
),
K
(
info
));
}
else
if
(
OB_FAIL
(
check_tenants_backup_task_failed
(
info
,
info_manager
,
updater
.
get_trans
())))
{
LOG_WARN
(
"failed to check tenants backup task failed"
,
K
(
ret
),
K
(
info
));
}
else
if
(
OB_FAIL
(
do_with_all_finished_info
(
info
,
updater
,
info_manager
)))
{
...
...
@@ -3123,6 +3125,80 @@ int ObRootBackup::do_tenant_update_task_his_and_backup_set_file(
return
ret
;
}
int
ObRootBackup
::
check_server_disk_stat
(
const
ObBaseBackupInfoStruct
&
info
,
common
::
ObISQLClient
&
sys_tenant_trans
)
{
int
ret
=
OB_SUCCESS
;
ObTenantBackupTaskInfo
sys_task_info
;
ObTenantBackupTaskInfo
sys_dest_task_info
;
const
ObZone
zone
;
ObArray
<
share
::
ObServerStatus
>
server_status_array
;
const
int64_t
NO_LIMIT_PERCENT
=
100
;
if
(
!
is_inited_
)
{
ret
=
OB_NOT_INIT
;
LOG_WARN
(
"root backup do not init"
,
K
(
ret
));
}
else
if
(
!
info
.
is_valid
())
{
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"check server disk stat get invalid argument"
,
K
(
ret
),
K
(
info
));
}
else
if
(
OB_FAIL
(
get_tenant_backup_task
(
info
.
tenant_id_
,
info
.
backup_set_id_
,
info
.
incarnation_
,
sys_tenant_trans
,
sys_task_info
)))
{
LOG_WARN
(
"failed to get tenant backup task"
,
K
(
ret
),
K
(
info
));
}
else
if
(
!
sys_task_info
.
is_result_succeed
())
{
// do nothing
}
else
if
(
OB_FAIL
(
server_mgr_
->
get_server_statuses
(
zone
,
server_status_array
)))
{
LOG_WARN
(
"failed to get server statuses"
,
K
(
ret
));
}
else
{
for
(
int64_t
i
=
0
;
OB_SUCC
(
ret
)
&&
i
<
server_status_array
.
count
();
++
i
)
{
const
ObServerStatus
&
status
=
server_status_array
.
at
(
i
);
if
(
!
status
.
is_active
()
||
!
status
.
in_service
())
{
// do nothing
}
else
if
(
0
==
status
.
resource_info_
.
disk_total_
)
{
}
else
{
const
int64_t
data_disk_usage_limit_percentage
=
GCONF
.
data_disk_usage_limit_percentage
;
int64_t
used_percent
=
(
100
*
status
.
resource_info_
.
disk_in_use_
)
/
status
.
resource_info_
.
disk_total_
;
#ifdef ERRSIM
if
(
OB_SUCC
(
ret
))
{
ret
=
E
(
EventTable
::
EN_BACKUP_SERVER_DISK_IS_FULL
)
OB_SUCCESS
;
if
(
OB_FAIL
(
ret
))
{
STORAGE_LOG
(
ERROR
,
"fake EN_BACKUP_SERVER_DISK_IS_FULL"
,
K
(
ret
));
used_percent
=
100
;
ret
=
OB_SUCCESS
;
}
}
#endif
if
(
data_disk_usage_limit_percentage
!=
NO_LIMIT_PERCENT
&&
used_percent
>=
data_disk_usage_limit_percentage
)
{
FLOG_INFO
(
"server disk is almost full"
,
K
(
ret
),
K
(
used_percent
),
K
(
status
));
sys_dest_task_info
=
sys_task_info
;
sys_dest_task_info
.
result_
=
OB_CS_OUTOF_DISK_SPACE
;
if
(
OB_FAIL
(
update_tenant_backup_task
(
sys_tenant_trans
,
sys_task_info
,
sys_dest_task_info
)))
{
LOG_WARN
(
"failed to update tenant backup task"
,
K
(
ret
),
K
(
sys_task_info
),
K
(
sys_dest_task_info
));
}
else
{
ROOTSERVICE_EVENT_ADD
(
"backup"
,
"backup server disk is almost full"
,
"server"
,
status
.
server_
,
"disk_in_use"
,
status
.
resource_info_
.
disk_in_use_
,
"disk_total"
,
status
.
resource_info_
.
disk_total_
,
"result"
,
OB_CS_OUTOF_DISK_SPACE
);
break
;
}
}
}
}
}
return
ret
;
}
bool
ObRootBackup
::
is_force_cancel_
()
const
{
return
GCONF
.
backup_dest
.
get_value_string
().
empty
();
}
ObTenantBackup
::
ObTenantBackup
()
:
is_inited_
(
false
),
schema_service_
(
NULL
),
...
...
src/rootserver/ob_root_backup.h
浏览文件 @
27c68a2d
...
...
@@ -253,6 +253,10 @@ private:
int
insert_tenant_backup_set_file_failed
(
ObMySQLTransaction
&
trans
,
const
share
::
ObTenantBackupTaskInfo
&
task_info
);
int
do_tenant_update_task_his_and_backup_set_file
(
const
share
::
ObTenantBackupTaskInfo
&
task_info
,
const
ObBackupSetFileInfo
&
backup_set_file_info
);
int
check_server_disk_stat
(
const
ObBaseBackupInfoStruct
&
info
,
common
::
ObISQLClient
&
sys_tenant_trans
);
private:
bool
is_force_cancel_
()
const
;
private:
bool
is_inited_
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录