Fix root inspection error
This commit is contained in:
@ -17,6 +17,7 @@
|
||||
#include "lib/time/ob_time_utility.h"
|
||||
#include "lib/oblog/ob_log_module.h"
|
||||
#include "share/ob_cluster_version.h" // for GET_MIN_DATA_VERSION
|
||||
#include "lib/mysqlclient/ob_isql_client.h"
|
||||
namespace oceanbase
|
||||
{
|
||||
using namespace common;
|
||||
@ -112,5 +113,82 @@ int ObShareUtil::generate_arb_replica_num(
|
||||
}
|
||||
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 oceanbase
|
||||
|
||||
Reference in New Issue
Block a user