Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
clmforever
oceanbase
提交
1ce10fdb
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,发现更多精彩内容 >>
提交
1ce10fdb
编写于
3月 02, 2023
作者:
T
tino247
提交者:
ob-robot
3月 02, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix root inspection error
上级
10902c8c
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
143 addition
and
22 deletion
+143
-22
src/rootserver/ob_root_inspection.cpp
src/rootserver/ob_root_inspection.cpp
+48
-16
src/rootserver/ob_root_inspection.h
src/rootserver/ob_root_inspection.h
+1
-0
src/share/config/ob_config.cpp
src/share/config/ob_config.cpp
+6
-5
src/share/config/ob_config.h
src/share/config/ob_config.h
+0
-1
src/share/ob_share_util.cpp
src/share/ob_share_util.cpp
+78
-0
src/share/ob_share_util.h
src/share/ob_share_util.h
+10
-0
未找到文件。
src/rootserver/ob_root_inspection.cpp
浏览文件 @
1ce10fdb
...
@@ -937,9 +937,8 @@ int ObRootInspection::check_sys_stat_(const uint64_t tenant_id)
...
@@ -937,9 +937,8 @@ int ObRootInspection::check_sys_stat_(const uint64_t tenant_id)
LOG_WARN
(
"schema_service is null"
,
KR
(
ret
));
LOG_WARN
(
"schema_service is null"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
check_cancel
()))
{
}
else
if
(
OB_FAIL
(
check_cancel
()))
{
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
}
else
if
(
!
schema_service_
->
is_tenant_full_schema
(
tenant_id
))
{
}
else
if
(
OB_FAIL
(
check_tenant_status_
(
tenant_id
)))
{
ret
=
OB_EAGAIN
;
LOG_WARN
(
"fail to check tenant status"
,
KR
(
ret
),
K
(
tenant_id
));
LOG_WARN
(
"schema is not ready, try again"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_FAIL
(
sys_stat
.
set_initial_values
(
tenant_id
)))
{
}
else
if
(
OB_FAIL
(
sys_stat
.
set_initial_values
(
tenant_id
)))
{
LOG_WARN
(
"set initial values failed"
,
KR
(
ret
),
K
(
tenant_id
));
LOG_WARN
(
"set initial values failed"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_FAIL
(
extra_cond
.
assign_fmt
(
"tenant_id = %lu"
,
}
else
if
(
OB_FAIL
(
extra_cond
.
assign_fmt
(
"tenant_id = %lu"
,
...
@@ -999,9 +998,8 @@ int ObRootInspection::check_sys_param_(const uint64_t tenant_id)
...
@@ -999,9 +998,8 @@ int ObRootInspection::check_sys_param_(const uint64_t tenant_id)
LOG_WARN
(
"schema_service is null"
,
KR
(
ret
));
LOG_WARN
(
"schema_service is null"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
check_cancel
()))
{
}
else
if
(
OB_FAIL
(
check_cancel
()))
{
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
}
else
if
(
!
schema_service_
->
is_tenant_full_schema
(
tenant_id
))
{
}
else
if
(
OB_FAIL
(
check_tenant_status_
(
tenant_id
)))
{
ret
=
OB_EAGAIN
;
LOG_WARN
(
"fail to check tenant status"
,
KR
(
ret
),
K
(
tenant_id
));
LOG_WARN
(
"schema is not ready, try again"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_FAIL
(
extra_cond
.
assign_fmt
(
"tenant_id = %lu"
,
}
else
if
(
OB_FAIL
(
extra_cond
.
assign_fmt
(
"tenant_id = %lu"
,
ObSchemaUtils
::
get_extract_tenant_id
(
exec_tenant_id
,
tenant_id
))))
{
ObSchemaUtils
::
get_extract_tenant_id
(
exec_tenant_id
,
tenant_id
))))
{
LOG_WARN
(
"extra_cond assign_fmt failed"
,
KR
(
ret
),
K
(
tenant_id
));
LOG_WARN
(
"extra_cond assign_fmt failed"
,
KR
(
ret
),
K
(
tenant_id
));
...
@@ -1271,15 +1269,6 @@ int ObRootInspection::check_sys_table_schemas_(
...
@@ -1271,15 +1269,6 @@ int ObRootInspection::check_sys_table_schemas_(
||
OB_INVALID_TENANT_ID
==
tenant_id
))
{
||
OB_INVALID_TENANT_ID
==
tenant_id
))
{
ret
=
OB_INVALID_ARGUMENT
;
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid tenant_id"
,
KR
(
ret
),
K
(
tenant_id
));
LOG_WARN
(
"invalid tenant_id"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_ISNULL
(
schema_service_
))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"schema_service is null"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
schema_service_
->
get_tenant_refreshed_schema_version
(
tenant_id
,
schema_version
)))
{
LOG_WARN
(
"fail to get tenant refreshed schema_version"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
!
ObSchemaService
::
is_formal_version
(
schema_version
))
{
ret
=
OB_EAGAIN
;
LOG_WARN
(
"schema is not ready, try again"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
schema_version
));
}
else
{
}
else
{
const
schema_create_func
*
creator_ptr_array
[]
=
{
const
schema_create_func
*
creator_ptr_array
[]
=
{
share
::
all_core_table_schema_creator
,
share
::
all_core_table_schema_creator
,
...
@@ -1302,6 +1291,8 @@ int ObRootInspection::check_sys_table_schemas_(
...
@@ -1302,6 +1291,8 @@ int ObRootInspection::check_sys_table_schemas_(
table_schema
.
reset
();
table_schema
.
reset
();
if
(
OB_FAIL
(
check_cancel
()))
{
if
(
OB_FAIL
(
check_cancel
()))
{
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
check_tenant_status_
(
tenant_id
)))
{
LOG_WARN
(
"fail to check tenant status"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_FAIL
((
*
creator_ptr
)(
table_schema
)))
{
}
else
if
(
OB_FAIL
((
*
creator_ptr
)(
table_schema
)))
{
LOG_WARN
(
"create table schema failed"
,
KR
(
ret
));
LOG_WARN
(
"create table schema failed"
,
KR
(
ret
));
}
else
if
(
!
is_sys_tenant
(
tenant_id
)
}
else
if
(
!
is_sys_tenant
(
tenant_id
)
...
@@ -1326,6 +1317,10 @@ int ObRootInspection::check_sys_table_schemas_(
...
@@ -1326,6 +1317,10 @@ int ObRootInspection::check_sys_table_schemas_(
LOG_WARN
(
"check sys view failed"
,
KR
(
tmp_ret
),
K
(
tenant_id
),
LOG_WARN
(
"check sys view failed"
,
KR
(
tmp_ret
),
K
(
tenant_id
),
"table_id"
,
table_schema
.
get_table_id
(),
"table_name"
,
table_schema
.
get_table_name
());
"table_id"
,
table_schema
.
get_table_id
(),
"table_name"
,
table_schema
.
get_table_name
());
back_ret
=
OB_SUCCESS
==
back_ret
?
tmp_ret
:
back_ret
;
back_ret
=
OB_SUCCESS
==
back_ret
?
tmp_ret
:
back_ret
;
// sql may has occur other error except OB_SCHEMA_ERROR, we should not continue is such situation.
if
(
OB_SCHEMA_ERROR
!=
tmp_ret
)
{
ret
=
OB_SUCC
(
ret
)
?
back_ret
:
tmp_ret
;
}
}
}
}
}
}
// end for
}
// end for
...
@@ -1585,7 +1580,12 @@ int ObRootInspection::check_sys_view_(
...
@@ -1585,7 +1580,12 @@ int ObRootInspection::check_sys_view_(
}
}
}
}
if
(
OB_FAIL
(
ret
))
{
if
(
OB_FAIL
(
ret
))
{
if
(
OB_ERR_VIEW_INVALID
==
ret
)
{
ret
=
OB_SCHEMA_ERROR
;
LOG_ERROR
(
"check sys view: expand failed"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
table_name
));
LOG_ERROR
(
"check sys view: expand failed"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
table_name
));
}
else
{
LOG_WARN
(
"check sys view: expand failed"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
table_name
));
}
}
else
if
(
OB_ISNULL
(
result
=
res
.
get_result
()))
{
}
else
if
(
OB_ISNULL
(
result
=
res
.
get_result
()))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"failed to get sql result"
,
KR
(
ret
),
K
(
tenant_id
));
LOG_WARN
(
"failed to get sql result"
,
KR
(
ret
),
K
(
tenant_id
));
...
@@ -1865,6 +1865,8 @@ int ObRootInspection::check_data_version_()
...
@@ -1865,6 +1865,8 @@ int ObRootInspection::check_data_version_()
FOREACH_X
(
tenant_id
,
tenant_ids
,
OB_SUCC
(
ret
))
{
FOREACH_X
(
tenant_id
,
tenant_ids
,
OB_SUCC
(
ret
))
{
if
(
OB_FAIL
(
check_cancel
()))
{
if
(
OB_FAIL
(
check_cancel
()))
{
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
LOG_WARN
(
"check_cancel failed"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
check_tenant_status_
(
*
tenant_id
)))
{
LOG_WARN
(
"fail to check tenant status"
,
KR
(
ret
),
K
(
*
tenant_id
));
}
else
if
(
OB_TMP_FAIL
(
check_data_version_
(
*
tenant_id
)))
{
}
else
if
(
OB_TMP_FAIL
(
check_data_version_
(
*
tenant_id
)))
{
LOG_WARN
(
"fail to check data version by tenant"
,
KR
(
tmp_ret
),
K
(
*
tenant_id
));
LOG_WARN
(
"fail to check data version by tenant"
,
KR
(
tmp_ret
),
K
(
*
tenant_id
));
backup_ret
=
OB_SUCCESS
==
backup_ret
?
tmp_ret
:
backup_ret
;
backup_ret
=
OB_SUCCESS
==
backup_ret
?
tmp_ret
:
backup_ret
;
...
@@ -1917,6 +1919,36 @@ int ObRootInspection::check_cancel()
...
@@ -1917,6 +1919,36 @@ int ObRootInspection::check_cancel()
return
ret
;
return
ret
;
}
}
int
ObRootInspection
::
check_tenant_status_
(
const
uint64_t
tenant_id
)
{
int
ret
=
OB_SUCCESS
;
ObSchemaGetterGuard
guard
;
const
ObSimpleTenantSchema
*
tenant
=
NULL
;
int64_t
schema_version
=
OB_INVALID_VERSION
;
if
(
OB_ISNULL
(
schema_service_
))
{
ret
=
OB_NOT_INIT
;
LOG_WARN
(
"schema service is null"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
schema_service_
->
get_tenant_schema_guard
(
OB_SYS_TENANT_ID
,
guard
)))
{
LOG_WARN
(
"fail to get schema guard"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
guard
.
get_tenant_info
(
tenant_id
,
tenant
)))
{
LOG_WARN
(
"fail to get tenant schema"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_ISNULL
(
tenant
))
{
// tenant may has been dropped;
ret
=
OB_EAGAIN
;
LOG_WARN
(
"tenant may be dropped, don't continue"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
!
tenant
->
is_normal
())
{
ret
=
OB_EAGAIN
;
LOG_WARN
(
"tenant status is not noraml, should check next round"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_FAIL
(
schema_service_
->
get_tenant_refreshed_schema_version
(
tenant_id
,
schema_version
)))
{
LOG_WARN
(
"fail to get tenant schema version"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
!
ObSchemaService
::
is_formal_version
(
schema_version
))
{
ret
=
OB_EAGAIN
;
LOG_WARN
(
"schema version is not formal, observer may be restarting or inner table schema changed, "
"should check next round"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
schema_version
));
}
return
ret
;
}
ObUpgradeInspection
::
ObUpgradeInspection
()
ObUpgradeInspection
::
ObUpgradeInspection
()
:
inited_
(
false
),
schema_service_
(
NULL
),
root_inspection_
(
NULL
)
:
inited_
(
false
),
schema_service_
(
NULL
),
root_inspection_
(
NULL
)
{
{
...
...
src/rootserver/ob_root_inspection.h
浏览文件 @
1ce10fdb
...
@@ -225,6 +225,7 @@ private:
...
@@ -225,6 +225,7 @@ private:
int
check_sys_view_
(
const
uint64_t
tenant_id
,
int
check_sys_view_
(
const
uint64_t
tenant_id
,
const
share
::
schema
::
ObTableSchema
&
hard_code_table
);
const
share
::
schema
::
ObTableSchema
&
hard_code_table
);
int
check_cancel
();
int
check_cancel
();
int
check_tenant_status_
(
const
uint64_t
tenant_id
);
private:
private:
bool
inited_
;
bool
inited_
;
volatile
bool
stopped_
;
volatile
bool
stopped_
;
...
...
src/share/config/ob_config.cpp
浏览文件 @
1ce10fdb
...
@@ -996,15 +996,16 @@ ObConfigVersionItem::ObConfigVersionItem(ObConfigContainer *container,
...
@@ -996,15 +996,16 @@ ObConfigVersionItem::ObConfigVersionItem(ObConfigContainer *container,
bool
ObConfigVersionItem
::
set
(
const
char
*
str
)
bool
ObConfigVersionItem
::
set
(
const
char
*
str
)
{
{
int64_t
old_value
=
value_
;
int64_t
old_value
=
get_value
()
;
bool
value_update
=
value_updated
();
bool
value_update
=
value_updated
();
bool
valid
=
ObConfigIntegralItem
::
set
(
str
);
bool
valid
=
ObConfigIntegralItem
::
set
(
str
);
if
(
valid
&&
value_update
&&
old_value
>
value_
)
{
int64_t
new_value
=
get_value
();
OB_LOG_RET
(
ERROR
,
OB_ERR_UNEXPECTED
,
"Attention!!! data version is retrogressive"
,
K
(
old_value
),
K_
(
value
));
if
(
valid
&&
value_update
&&
old_value
>
new_value
)
{
OB_LOG_RET
(
ERROR
,
OB_ERR_UNEXPECTED
,
"Attention!!! data version is retrogressive"
,
K
(
old_value
),
K
(
new_value
));
}
}
if
(
old_value
!=
value_
)
{
if
(
value_update
&&
old_value
!=
new_value
)
{
ObTaskController
::
get
().
allow_next_syslog
();
ObTaskController
::
get
().
allow_next_syslog
();
OB_LOG
(
INFO
,
"Config data version changed"
,
K
(
old_value
),
K
_
(
value
),
K
(
value_update
),
K
(
valid
));
OB_LOG
(
INFO
,
"Config data version changed"
,
K
(
old_value
),
K
(
new_
value
),
K
(
value_update
),
K
(
valid
));
}
}
return
valid
;
return
valid
;
}
}
...
...
src/share/config/ob_config.h
浏览文件 @
1ce10fdb
...
@@ -846,7 +846,6 @@ protected:
...
@@ -846,7 +846,6 @@ protected:
virtual
int64_t
parse
(
const
char
*
str
,
bool
&
valid
)
const
override
;
virtual
int64_t
parse
(
const
char
*
str
,
bool
&
valid
)
const
override
;
private:
private:
uint64_t
value_
;
DISALLOW_COPY_AND_ASSIGN
(
ObConfigVersionItem
);
DISALLOW_COPY_AND_ASSIGN
(
ObConfigVersionItem
);
};
};
...
...
src/share/ob_share_util.cpp
浏览文件 @
1ce10fdb
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#include "lib/time/ob_time_utility.h"
#include "lib/time/ob_time_utility.h"
#include "lib/oblog/ob_log_module.h"
#include "lib/oblog/ob_log_module.h"
#include "share/ob_cluster_version.h" // for GET_MIN_DATA_VERSION
#include "share/ob_cluster_version.h" // for GET_MIN_DATA_VERSION
#include "lib/mysqlclient/ob_isql_client.h"
namespace
oceanbase
namespace
oceanbase
{
{
using
namespace
common
;
using
namespace
common
;
...
@@ -112,5 +113,82 @@ int ObShareUtil::generate_arb_replica_num(
...
@@ -112,5 +113,82 @@ int ObShareUtil::generate_arb_replica_num(
}
}
return
ret
;
return
ret
;
}
}
int
ObShareUtil
::
fetch_current_cluster_version
(
common
::
ObISQLClient
&
client
,
uint64_t
&
cluster_version
)
{
int
ret
=
OB_SUCCESS
;
ObSqlString
sql
;
sqlclient
::
ObMySQLResult
*
result
=
NULL
;
SMART_VAR
(
ObMySQLProxy
::
MySQLResult
,
res
)
{
if
(
OB_FAIL
(
sql
.
assign_fmt
(
"select value from %s where name = '%s'"
,
OB_ALL_SYS_PARAMETER_TNAME
,
"min_observer_version"
)))
{
LOG_WARN
(
"fail to assign fmt"
,
KR
(
ret
),
K
(
sql
));
}
else
if
(
OB_FAIL
(
client
.
read
(
res
,
OB_SYS_TENANT_ID
,
sql
.
ptr
())))
{
LOG_WARN
(
"execute sql failed"
,
KR
(
ret
),
K
(
sql
));
}
else
if
(
OB_ISNULL
(
result
=
res
.
get_result
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"fail to get result"
,
KR
(
ret
));
}
else
if
(
OB_FAIL
(
result
->
next
()))
{
if
(
OB_ITER_END
==
ret
)
{
ret
=
OB_ENTRY_NOT_EXIST
;
LOG_WARN
(
"min_observer_version not exist, may be in bootstrap stage"
,
KR
(
ret
));
}
else
{
LOG_WARN
(
"fail to get next"
,
KR
(
ret
));
}
}
else
{
ObString
value
;
EXTRACT_VARCHAR_FIELD_MYSQL
(
*
result
,
"value"
,
value
);
if
(
FAILEDx
(
ObClusterVersion
::
get_version
(
value
,
cluster_version
)))
{
LOG_WARN
(
"fail to get version"
,
KR
(
ret
),
K
(
value
));
}
}
}
// end SMART_VAR
return
ret
;
}
int
ObShareUtil
::
fetch_current_data_version
(
common
::
ObISQLClient
&
client
,
const
uint64_t
tenant_id
,
uint64_t
&
data_version
)
{
int
ret
=
OB_SUCCESS
;
ObSqlString
sql
;
sqlclient
::
ObMySQLResult
*
result
=
NULL
;
const
uint64_t
exec_tenant_id
=
gen_meta_tenant_id
(
tenant_id
);
SMART_VAR
(
ObMySQLProxy
::
MySQLResult
,
res
)
{
if
(
OB_UNLIKELY
(
OB_INVALID_TENANT_ID
==
tenant_id
||
OB_INVALID_TENANT_ID
==
exec_tenant_id
))
{
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"tenant_id is invalid"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
exec_tenant_id
));
}
else
if
(
OB_FAIL
(
sql
.
assign_fmt
(
"select value from %s where name = '%s'"
,
OB_TENANT_PARAMETER_TNAME
,
"compatible"
)))
{
LOG_WARN
(
"fail to assign fmt"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
sql
));
}
else
if
(
OB_FAIL
(
client
.
read
(
res
,
exec_tenant_id
,
sql
.
ptr
())))
{
LOG_WARN
(
"execute sql failed"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
sql
));
}
else
if
(
OB_ISNULL
(
result
=
res
.
get_result
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"fail to get result"
,
KR
(
ret
),
K
(
tenant_id
));
}
else
if
(
OB_FAIL
(
result
->
next
()))
{
if
(
OB_ITER_END
==
ret
)
{
ret
=
OB_ENTRY_NOT_EXIST
;
LOG_WARN
(
"compatible not exist, create tenant process may be doing or failed "
,
KR
(
ret
),
K
(
tenant_id
));
}
else
{
LOG_WARN
(
"fail to get next"
,
KR
(
ret
),
K
(
tenant_id
));
}
}
else
{
ObString
value
;
EXTRACT_VARCHAR_FIELD_MYSQL
(
*
result
,
"value"
,
value
);
if
(
FAILEDx
(
ObClusterVersion
::
get_version
(
value
,
data_version
)))
{
LOG_WARN
(
"fail to get version"
,
KR
(
ret
),
K
(
value
));
}
}
}
// end SMART_VAR
return
ret
;
}
}
//end namespace share
}
//end namespace share
}
//end namespace oceanbase
}
//end namespace oceanbase
src/share/ob_share_util.h
浏览文件 @
1ce10fdb
...
@@ -18,6 +18,7 @@ namespace oceanbase
...
@@ -18,6 +18,7 @@ namespace oceanbase
namespace
common
namespace
common
{
{
class
ObTimeoutCtx
;
class
ObTimeoutCtx
;
class
ObISQLClient
;
}
}
namespace
share
namespace
share
{
{
...
@@ -42,6 +43,15 @@ public:
...
@@ -42,6 +43,15 @@ public:
const
uint64_t
tenant_id
,
const
uint64_t
tenant_id
,
const
ObLSID
&
ls_id
,
const
ObLSID
&
ls_id
,
int64_t
&
arb_replica_num
);
int64_t
&
arb_replica_num
);
static
int
fetch_current_cluster_version
(
common
::
ObISQLClient
&
client
,
uint64_t
&
cluster_version
);
static
int
fetch_current_data_version
(
common
::
ObISQLClient
&
client
,
const
uint64_t
tenant_id
,
uint64_t
&
data_version
);
};
};
}
//end namespace share
}
//end namespace share
}
//end namespace oceanbase
}
//end namespace oceanbase
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录