Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
clmforever
oceanbase
提交
9596e12c
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,体验更适合开发者的 AI 搜索 >>
提交
9596e12c
编写于
3月 11, 2022
作者:
W
WenJinyu
提交者:
LINGuanRen
3月 11, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
adjust backup clean log
上级
bb425c39
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
318 addition
and
186 deletion
+318
-186
src/rootserver/backup/ob_tenant_backup_data_clean_mgr.cpp
src/rootserver/backup/ob_tenant_backup_data_clean_mgr.cpp
+21
-59
src/rootserver/ob_backup_data_clean.cpp
src/rootserver/ob_backup_data_clean.cpp
+279
-113
src/rootserver/ob_backup_data_clean.h
src/rootserver/ob_backup_data_clean.h
+14
-14
src/share/backup/ob_backup_operator.cpp
src/share/backup/ob_backup_operator.cpp
+2
-0
src/share/backup/ob_log_archive_backup_info_mgr.cpp
src/share/backup/ob_log_archive_backup_info_mgr.cpp
+2
-0
未找到文件。
src/rootserver/backup/ob_tenant_backup_data_clean_mgr.cpp
浏览文件 @
9596e12c
...
...
@@ -581,7 +581,7 @@ int ObBackupDataCleanUtil::delete_clog_dir_files(const ObBackupPath &path, const
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"failed to get file id"
,
K
(
ret
),
K
(
file_name
),
K
(
tmp_file_id
));
}
else
if
(
tmp_file_id
>
file_id
)
{
LOG_INFO
(
"no need delete clog file, skip it"
,
K
(
tmp_file_id
),
K
(
file_id
));
LOG_INFO
(
"
[BACKUP_CLEAN]
no need delete clog file, skip it"
,
K
(
tmp_file_id
),
K
(
file_id
));
}
else
{
ObBackupPath
tmp_path
=
path
;
if
(
OB_FAIL
(
tmp_path
.
join
(
file_name
)))
{
...
...
@@ -749,7 +749,7 @@ int ObTenantBackupDataCleanMgr::do_clean()
ObBackupDataCleanStatics
base_data_clean_statics
;
ObBackupDataCleanStatics
clog_clean_statics
;
LOG_INFO
(
"tenant backup data clean mgr do clean"
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
LOG_INFO
(
"
[BACKUP_CLEAN]
tenant backup data clean mgr do clean"
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
if
(
!
is_inited_
)
{
ret
=
OB_NOT_INIT
;
LOG_WARN
(
"tenant backup data clean mgr do not init"
,
K
(
ret
));
...
...
@@ -772,7 +772,7 @@ int ObTenantBackupDataCleanMgr::do_clean()
clean_statics
+=
base_data_clean_statics
;
}
LOG_INFO
(
"finish tenant backup data clean mgr do clean"
,
LOG_INFO
(
"
[BACKUP_CLEAN]
finish tenant backup data clean mgr do clean"
,
"cost_ts"
,
ObTimeUtil
::
current_time
()
-
start_ts
,
K
(
ret
),
...
...
@@ -810,7 +810,7 @@ int ObTenantBackupBaseDataCleanTask::do_clean()
{
int
ret
=
OB_SUCCESS
;
const
int64_t
start_ts
=
ObTimeUtil
::
current_time
();
LOG_INFO
(
"start tenant backup base data clean task"
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
LOG_INFO
(
"
[BACKUP_CLEAN]
start tenant backup base data clean task"
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
if
(
!
is_inited_
)
{
ret
=
OB_NOT_INIT
;
...
...
@@ -827,7 +827,7 @@ int ObTenantBackupBaseDataCleanTask::do_clean()
}
}
LOG_INFO
(
"finish tenant backup base data clean task"
,
LOG_INFO
(
"
[BACKUP_CLEAN]
finish tenant backup base data clean task"
,
"cost"
,
ObTimeUtil
::
current_time
()
-
start_ts
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
...
...
@@ -872,7 +872,7 @@ int ObTenantBackupBaseDataCleanTask::clean_backup_data(const ObSimpleBackupDataC
}
else
if
(
OB_FAIL
(
get_tenant_backup_infos
(
simple_clean_tenant
,
clean_element
,
backup_set_id
,
extern_backup_infos
)))
{
LOG_WARN
(
"failed to get tenant backup infos"
,
K
(
ret
),
K
(
backup_set_id
),
K
(
simple_clean_tenant
),
K
(
clean_element
));
}
else
{
LOG_INFO
(
"get extern backup infos"
,
K
(
extern_backup_infos
),
K
(
backup_set_id
));
LOG_INFO
(
"
[BACKUP_CLEAN]
get extern backup infos"
,
K
(
extern_backup_infos
),
K
(
backup_set_id
));
for
(
int64_t
i
=
0
;
OB_SUCC
(
ret
)
&&
i
<
extern_backup_infos
.
count
();
++
i
)
{
const
ObExternBackupInfo
&
backup_info
=
extern_backup_infos
.
at
(
i
);
if
(
OB_FAIL
(
data_clean_
->
check_can_do_task
()))
{
...
...
@@ -936,11 +936,6 @@ int ObTenantBackupBaseDataCleanTask::clean_backp_set(const ObSimpleBackupDataCle
LOG_WARN
(
"failed to get clean statics"
,
K
(
ret
));
}
else
{
clean_statics_
+=
clean_statics
;
LOG_INFO
(
"clean table base data statics"
,
K
(
table_id
),
K
(
cluster_backup_dest
),
K
(
extern_backup_info
),
K
(
clean_statics
));
}
}
...
...
@@ -1285,7 +1280,7 @@ int ObTenantBackupClogDataCleanTask::do_clean()
int
ret
=
OB_SUCCESS
;
const
int64_t
start_ts
=
ObTimeUtil
::
current_time
();
int64_t
start_replay_log_ts
=
0
;
LOG_INFO
(
"tenant backup clog data clean task do clean"
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
LOG_INFO
(
"
[BACKUP_CLEAN]
tenant backup clog data clean task do clean"
,
K
(
clean_tenant_
.
simple_clean_tenant_
));
if
(
!
is_inited_
)
{
ret
=
OB_NOT_INIT
;
...
...
@@ -1315,7 +1310,7 @@ int ObTenantBackupClogDataCleanTask::do_clean()
}
}
LOG_INFO
(
"finish tenant backup clog data clean task do clean"
,
LOG_INFO
(
"
[BACKUP_CLEAN]
finish tenant backup clog data clean task do clean"
,
"cost"
,
ObTimeUtil
::
current_time
()
-
start_ts
,
K
(
ret
),
...
...
@@ -1484,10 +1479,10 @@ int ObTenantBackupClogDataCleanTask::generate_backup_piece_pg_tasks(
int
hash_ret
=
sys_tenant_deleted_backup_piece
.
exist_refactored
(
simple_piece_key
);
if
(
OB_HASH_EXIST
==
hash_ret
)
{
delete_clog_mode
.
mode_
=
ObBackupDeleteClogMode
::
DELETE_BACKUP_PIECE
;
LOG_INFO
(
"backup piece will be deleted"
,
K
(
simple_piece_key
));
LOG_INFO
(
"
[BACKUP_CLEAN]
backup piece will be deleted"
,
K
(
simple_piece_key
));
}
else
if
(
OB_HASH_NOT_EXIST
==
hash_ret
)
{
delete_clog_mode
.
mode_
=
ObBackupDeleteClogMode
::
NONE
;
LOG_INFO
(
"backup piece will not be deleted"
,
K
(
simple_piece_key
));
LOG_INFO
(
"
[BACKUP_CLEAN]
backup piece will not be deleted"
,
K
(
simple_piece_key
));
}
else
{
ret
=
OB_SUCCESS
==
hash_ret
?
OB_ERR_UNEXPECTED
:
hash_ret
;
LOG_WARN
(
"failed to check backup piece exist"
,
K
(
ret
),
K
(
hash_ret
),
K
(
simple_piece_key
));
...
...
@@ -1495,7 +1490,7 @@ int ObTenantBackupClogDataCleanTask::generate_backup_piece_pg_tasks(
}
if
(
OB_SUCC
(
ret
))
{
LOG_INFO
(
"
start handle backup piece"
,
FLOG_INFO
(
"[BACKUP_CLEAN]
start handle backup piece"
,
K
(
delete_clog_mode
),
"backup dest option"
,
clean_element
.
backup_dest_option_
,
...
...
@@ -1551,6 +1546,7 @@ int ObTenantBackupClogDataCleanTask::generate_backup_piece_pg_delete_task(
const
int64_t
start_replay_log_ts
,
const
ObPartitionKey
&
pg_key
,
const
ObBackupDeleteClogMode
&
delete_clog_mode
)
{
int
ret
=
OB_SUCCESS
;
UNUSED
(
simple_clean_tenant
);
ObPartitionClogDataCleanMgr
partition_clog_data_clean_mgr
;
uint64_t
data_file_id
=
0
;
uint64_t
index_file_id
=
0
;
...
...
@@ -1596,13 +1592,6 @@ int ObTenantBackupClogDataCleanTask::generate_backup_piece_pg_delete_task(
if
(
OB_FAIL
(
ret
))
{
}
else
{
clean_statics_
+=
clean_statics
;
LOG_INFO
(
"check and delete clog data"
,
K
(
pg_key
),
K
(
log_archive_round
),
K
(
backup_piece_info
),
K
(
simple_clean_tenant
),
K
(
start_replay_log_ts
),
K
(
delete_clog_mode
));
}
return
ret
;
}
...
...
@@ -1655,14 +1644,6 @@ int ObTenantBackupClogDataCleanTask::get_clog_file_id(const ObClusterBackupDest
index_file_id
=
UINT64_MAX
;
}
if
(
OB_SUCC
(
ret
))
{
LOG_INFO
(
"succeed get clog file id"
,
K
(
pg_key
),
K
(
data_file_id
),
K
(
index_file_id
),
K
(
start_replay_log_ts
),
K
(
delete_clog_mode
));
}
return
ret
;
}
...
...
@@ -2035,7 +2016,11 @@ int ObTableBaseDataCleanMgr::do_clean()
int
ret
=
OB_SUCCESS
;
const
int64_t
start_ts
=
ObTimeUtil
::
current_time
();
const
int64_t
inc_backup_set_id
=
extern_backup_info_
.
inc_backup_set_id_
;
LOG_INFO
(
"start table base data clean mgr"
,
K
(
table_id_
),
K
(
clean_element_
),
K
(
backup_set_id_
),
K
(
inc_backup_set_id
));
LOG_INFO
(
"[BACKUP_CLEAN]start table base data clean mgr"
,
K
(
table_id_
),
K
(
clean_element_
),
K
(
backup_set_id_
),
K
(
inc_backup_set_id
));
if
(
!
is_inited_
)
{
ret
=
OB_NOT_INIT
;
...
...
@@ -2056,7 +2041,7 @@ int ObTableBaseDataCleanMgr::do_clean()
}
}
}
LOG_INFO
(
"finish table base data clean mgr"
,
LOG_INFO
(
"
[BACKUP_CLEAN]
finish table base data clean mgr"
,
"cost_ts"
,
ObTimeUtil
::
current_time
()
-
start_ts
,
K
(
table_id_
),
...
...
@@ -2094,13 +2079,6 @@ int ObTableBaseDataCleanMgr::clean_partition_backup_data(const ObBackupMetaIndex
LOG_WARN
(
"failed to get partition data clean mgr"
,
K
(
ret
));
}
else
{
clean_statics_
+=
clean_statics
;
const
int64_t
cost_ts
=
ObTimeUtil
::
current_time
()
-
start_ts
;
LOG_INFO
(
"table clean partition backup data statics"
,
K
(
clean_element_
),
K
(
backup_set_id_
),
K
(
meta_index
),
K
(
clean_statics
),
K
(
cost_ts
));
}
return
ret
;
}
...
...
@@ -2186,7 +2164,7 @@ int ObTableClogDataCleanMgr::do_clean()
{
int
ret
=
OB_SUCCESS
;
const
int64_t
start_ts
=
ObTimeUtil
::
current_time
();
LOG_INFO
(
"start table clog data clean mgr do clean"
,
LOG_INFO
(
"
[BACKUP_CLEAN]
start table clog data clean mgr do clean"
,
K
(
table_id_
),
K
(
clean_element_
),
K
(
log_archive_round_
),
...
...
@@ -2212,7 +2190,7 @@ int ObTableClogDataCleanMgr::do_clean()
}
}
LOG_INFO
(
"finish table clog data clean mgr do clean"
,
LOG_INFO
(
"
[BACKUP_CLEAN]
finish table clog data clean mgr do clean"
,
"cost_ts"
,
ObTimeUtil
::
current_time
()
-
start_ts
,
K
(
ret
),
...
...
@@ -2265,14 +2243,6 @@ int ObTableClogDataCleanMgr::clean_partition_clog_backup_data(const ObBackupMeta
index_file_id
,
data_file_id
)))
{
LOG_WARN
(
"failed ot get clean max clog file id by log id"
,
K
(
ret
),
K
(
last_replay_log_id
));
}
else
{
LOG_INFO
(
"get clean max clog file id by log id"
,
K
(
pg_meta
.
pg_key_
),
K
(
last_replay_log_id
),
K
(
index_file_id
),
K
(
data_file_id
),
K
(
log_archive_round_
),
K
(
cluster_backup_dest
));
}
if
(
OB_FAIL
(
ret
))
{
...
...
@@ -2299,14 +2269,6 @@ int ObTableClogDataCleanMgr::clean_partition_clog_backup_data(const ObBackupMeta
LOG_WARN
(
"failed to get clean statics"
,
K
(
ret
));
}
else
{
clean_statics_
+=
clean_statics
;
LOG_INFO
(
"clean clog data statics"
,
K
(
log_archive_round_
),
K
(
cluster_backup_dest
),
K
(
pg_meta
.
pg_key_
),
K
(
last_replay_log_id
),
K
(
index_file_id
),
K
(
data_file_id
),
K
(
clean_statics
));
}
}
return
ret
;
...
...
@@ -2462,7 +2424,7 @@ int ObPartitionClogDataCleanMgr::touch_clog_backup_data()
++
retry_count
;
usleep
(
10
*
1000
);
// 10ms
if
(
REACH_TIME_INTERVAL
(
60
*
1000
*
1000
))
{
// 60s
LOG_INFO
(
"backup io limit, need retry"
,
"retry_count"
,
retry_count
,
K
(
ret
));
LOG_INFO
(
"
[BACKUP_CLEAN]
backup io limit, need retry"
,
"retry_count"
,
retry_count
,
K
(
ret
));
}
}
}
...
...
src/rootserver/ob_backup_data_clean.cpp
浏览文件 @
9596e12c
此差异已折叠。
点击以展开。
src/rootserver/ob_backup_data_clean.h
浏览文件 @
9596e12c
...
...
@@ -107,11 +107,10 @@ private:
int
get_server_clean_tenants
(
common
::
ObIArray
<
ObBackupDataCleanTenant
>
&
clean_tenants
);
int
get_server_need_clean_info
(
const
uint64_t
tenant_id
,
bool
&
need_add
);
int
get_all_tenant_ids
(
common
::
ObIArray
<
uint64_t
>
&
tenant_ids
);
int
get_tenant_backup_task_info
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
common
::
ObISQLClient
&
trans
,
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
tenant_infos
);
int
get_backup_clean_elements
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
task_infos
,
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
ObBackupDataCleanTenant
&
clean_tenant
);
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
const
bool
need_add_event
,
ObBackupDataCleanTenant
&
clean_tenant
);
int
do_tenant_backup_clean
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
ObBackupDataCleanTenant
&
clean_tenant
);
int
do_with_finished_tenant_clean_task
(
const
common
::
ObIArray
<
ObSimpleBackupDataCleanTenant
>
&
normal_clean_tenants
,
const
share
::
ObBackupCleanInfo
&
sys_clean_info
,
const
ObBackupDataCleanTenant
&
sys_clean_tenant
,
...
...
@@ -265,20 +264,20 @@ private:
int
add_log_archive_info
(
const
ObLogArchiveBackupInfo
&
log_archive_info
,
ObBackupDataCleanTenant
&
clean_tenant
);
int
add_delete_backup_set
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
task_infos
,
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
ObBackupDataCleanTenant
&
clean_tena
nt
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
const
bool
need_add_eve
nt
,
ObBackupDataCleanTenant
&
clean_tenant
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
int
add_obsolete_backup_sets
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
task_infos
,
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
ObBackupDataCleanTenant
&
clean_tena
nt
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
const
bool
need_add_eve
nt
,
ObBackupDataCleanTenant
&
clean_tenant
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
int
add_normal_tenant_obsolete_backup_sets
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
task_infos
,
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
ObBackupDataCleanTenant
&
clean_tena
nt
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
const
bool
need_add_eve
nt
,
ObBackupDataCleanTenant
&
clean_tenant
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
int
add_sys_tenant_obsolete_backup_sets
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
task_infos
,
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
ObBackupDataCleanTenant
&
clean_tena
nt
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
const
bool
need_add_eve
nt
,
ObBackupDataCleanTenant
&
clean_tenant
,
share
::
ObTenantBackupTaskInfo
&
min_include_task_info
);
int
deal_with_obsolete_backup_set
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
ObTenantBackupTaskInfo
&
task_info
,
const
common
::
ObArray
<
share
::
ObLogArchiveBackupInfo
>
&
log_archive_infos
,
const
int64_t
cluster_max_backup_set_id
,
ObBackupSetId
&
backup_set_id
,
bool
&
has_kept_last_succeed_data
,
...
...
@@ -289,8 +288,8 @@ private:
share
::
ObTenantBackupTaskInfo
&
clog_data_clean_point
);
int
add_obsolete_backup_set_with_order
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
reverse_task_infos
,
const
common
::
ObIArray
<
ObBackupSetId
>
&
reverse_backup_set_ids
,
ObBackupDataCleanTenant
&
clean_tena
nt
,
share
::
ObTenantBackupTaskInfo
&
clog_data_clean_point
);
const
common
::
ObIArray
<
ObBackupSetId
>
&
reverse_backup_set_ids
,
const
bool
need_add_eve
nt
,
ObBackupDataCleanTenant
&
clean_tenant
,
share
::
ObTenantBackupTaskInfo
&
clog_data_clean_point
);
int
add_delete_backup_piece
(
const
share
::
ObBackupCleanInfo
&
clean_info
,
const
common
::
ObIArray
<
share
::
ObTenantBackupTaskInfo
>
&
task_infos
,
...
...
@@ -386,7 +385,8 @@ private:
int
get_backup_task_info_from_extern_info
(
const
uint64_t
tenant_id
,
const
ObClusterBackupDest
&
cluster_backup_dest
,
const
ObExternBackupInfo
&
extern_backup_info
,
ObTenantBackupTaskInfo
&
backup_task_info
);
int
upgrade_backup_info
();
int
add_deleting_backup_set_id_into_set
(
const
uint64_t
tenant_id
,
const
ObBackupSetId
&
backup_set_id
);
int
add_deleting_backup_set_id_into_set
(
const
uint64_t
tenant_id
,
const
ObBackupSetId
&
backup_set_id
,
const
bool
need_add_event
);
int
check_backup_set_id_can_be_deleted
(
const
uint64_t
tenant_id
,
const
ObBackupSetId
&
backup_set_id
,
bool
&
can_deleted
);
int
remove_delete_expired_data_snapshot_
(
const
ObSimpleBackupDataCleanTenant
&
simple_tenant
);
...
...
src/share/backup/ob_backup_operator.cpp
浏览文件 @
9596e12c
...
...
@@ -1811,6 +1811,8 @@ int ObBackupTaskHistoryOperator::remove_one_item(
}
else
if
(
1
!=
affected_rows
)
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected affected rows"
,
K
(
ret
),
K
(
tenant_id
),
K
(
backup_set_id
),
K
(
affected_rows
));
}
else
{
LOG_INFO
(
"succ remove backup task"
,
K
(
tenant_id
),
K
(
backup_set_id
),
K
(
affected_rows
));
}
}
return
ret
;
...
...
src/share/backup/ob_log_archive_backup_info_mgr.cpp
浏览文件 @
9596e12c
...
...
@@ -1977,6 +1977,8 @@ int ObLogArchiveBackupInfoMgr::delete_log_archive_info(
LOG_WARN
(
"failed to apend copy id"
,
K
(
ret
),
K
(
sql
));
}
else
if
(
OB_FAIL
(
sql_client
.
write
(
OB_SYS_TENANT_ID
,
sql
.
ptr
(),
affected_rows
)))
{
LOG_WARN
(
"failed to write sql"
,
K
(
ret
),
K
(
sql
));
}
else
{
LOG_INFO
(
"succeed to delete log archive info"
,
K
(
affected_rows
),
K
(
sql
),
K
(
info
));
}
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录