[Fix] modify check tablet column checksum method in check old inner sql case
This commit is contained in:
@ -16,6 +16,8 @@
|
|||||||
#include "lib/string/ob_sql_string.h"
|
#include "lib/string/ob_sql_string.h"
|
||||||
#include "share/inner_table/ob_inner_table_schema.h"
|
#include "share/inner_table/ob_inner_table_schema.h"
|
||||||
#include "share/schema/ob_schema_utils.h"
|
#include "share/schema/ob_schema_utils.h"
|
||||||
|
#include "share/schema/ob_multi_version_schema_service.h"
|
||||||
|
#include "observer/ob_server_struct.h"
|
||||||
|
|
||||||
using namespace oceanbase::common;
|
using namespace oceanbase::common;
|
||||||
using namespace oceanbase::common::hash;
|
using namespace oceanbase::common::hash;
|
||||||
@ -205,24 +207,61 @@ int ObDDLChecksumOperator::get_column_checksum(const ObSqlString &sql, const uin
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ObDDLChecksumOperator::construct_tablet_column_map(
|
||||||
|
const uint64_t tablet_id,
|
||||||
|
const int64_t column_id,
|
||||||
|
common::hash::ObHashMap<uint64_t, ObArray<int64_t>> &tablet_columns_map)
|
||||||
|
{
|
||||||
|
int ret = OB_SUCCESS;
|
||||||
|
ObArray<int64_t> column_array;
|
||||||
|
|
||||||
|
if (!tablet_columns_map.created()) {
|
||||||
|
ret = OB_INVALID_ARGUMENT;
|
||||||
|
LOG_WARN("invalid arguments", K(ret), K(tablet_columns_map.created()));
|
||||||
|
} else if (OB_FAIL(tablet_columns_map.get_refactored(tablet_id, column_array))) {
|
||||||
|
if (OB_HASH_NOT_EXIST == ret) { // empty map, maybe first time to set map
|
||||||
|
ret = OB_SUCCESS;
|
||||||
|
if (OB_FAIL(column_array.push_back(column_id))) {
|
||||||
|
LOG_WARN("fail to push back column id to array", K(ret), K(tablet_id), K(column_id));
|
||||||
|
} else if (OB_FAIL(tablet_columns_map.set_refactored(tablet_id, column_array, false))) {
|
||||||
|
LOG_WARN("fail to set column array", K(ret), K(tablet_id));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LOG_WARN("fail to get column array from map", K(ret), K(tablet_id));
|
||||||
|
}
|
||||||
|
} else if (OB_FAIL(column_array.push_back(column_id))) {
|
||||||
|
LOG_WARN("fail to push back column id to array", K(ret), K(tablet_id), K(column_id));
|
||||||
|
} else if (OB_FAIL(tablet_columns_map.set_refactored(column_id, column_array, true))) {
|
||||||
|
LOG_WARN("fail to set tablet column map", K(ret), K(tablet_id), K(column_id));
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int ObDDLChecksumOperator::get_tablet_checksum_status(
|
int ObDDLChecksumOperator::get_tablet_checksum_status(
|
||||||
const ObSqlString &sql,
|
const ObSqlString &sql,
|
||||||
const uint64_t tenant_id,
|
const uint64_t tenant_id,
|
||||||
|
ObIArray<uint64_t> &batch_tablet_array,
|
||||||
|
ObIArray<ObColDesc> &column_ids,
|
||||||
common::ObMySQLProxy &sql_proxy,
|
common::ObMySQLProxy &sql_proxy,
|
||||||
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_map)
|
common::hash::ObHashMap<uint64_t, ObArray<int64_t>> &tablet_columns_map,
|
||||||
|
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_status_map)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
SMART_VAR(ObMySQLProxy::MySQLResult, res) {
|
SMART_VAR(ObMySQLProxy::MySQLResult, res) {
|
||||||
sqlclient::ObMySQLResult *result = NULL;
|
sqlclient::ObMySQLResult *result = NULL;
|
||||||
if (!sql.is_valid() || !tablet_checksum_map.created()) {
|
if (!sql.is_valid() || column_ids.count() <= 0 ||
|
||||||
|
!tablet_columns_map.created() || !tablet_checksum_status_map.created()) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid arguments", K(ret), K(sql), K(tablet_checksum_map.created()));
|
LOG_WARN("invalid arguments",
|
||||||
|
K(ret), K(sql), K(column_ids.count()), K(tablet_columns_map.created()), K(tablet_checksum_status_map.created()));
|
||||||
} else if (OB_FAIL(sql_proxy.read(res, tenant_id, sql.ptr()))) {
|
} else if (OB_FAIL(sql_proxy.read(res, tenant_id, sql.ptr()))) {
|
||||||
LOG_WARN("fail to execute sql", K(ret));
|
LOG_WARN("fail to execute sql", K(ret));
|
||||||
} 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("error unexpected, query result must not be NULL", K(ret));
|
LOG_WARN("error unexpected, query result must not be NULL", K(ret));
|
||||||
} else {
|
} else {
|
||||||
|
tablet_columns_map.reuse();
|
||||||
|
// 1. get tablet column checksums from sql result
|
||||||
while (OB_SUCC(ret)) {
|
while (OB_SUCC(ret)) {
|
||||||
if (OB_FAIL(result->next())) {
|
if (OB_FAIL(result->next())) {
|
||||||
if (OB_ITER_END == ret) {
|
if (OB_ITER_END == ret) {
|
||||||
@ -232,10 +271,29 @@ int ObDDLChecksumOperator::get_tablet_checksum_status(
|
|||||||
LOG_WARN("fail to get next row", K(ret));
|
LOG_WARN("fail to get next row", K(ret));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
uint64_t tablet_id_id = 0;
|
int64_t column_id = 0;
|
||||||
EXTRACT_UINT_FIELD_MYSQL(*result, "task_id", tablet_id_id, uint64_t);
|
uint64_t task_id = 0;
|
||||||
if (OB_FAIL(tablet_checksum_map.set_refactored(tablet_id_id, true))) {
|
EXTRACT_INT_FIELD_MYSQL(*result, "column_id", column_id, int64_t);
|
||||||
LOG_WARN("fail to set column checksum to map", K(ret));
|
EXTRACT_UINT_FIELD_MYSQL(*result, "task_id", task_id, uint64_t);
|
||||||
|
if (OB_FAIL(construct_tablet_column_map(task_id, column_id, tablet_columns_map))) {
|
||||||
|
LOG_WARN("fail to construnt tablet column map", K(ret), K(task_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 2. check tablet columns checksum exist or not
|
||||||
|
if (OB_SUCC(ret)) {
|
||||||
|
ObArray<int64_t> column_array;
|
||||||
|
bool checksum_status = true;
|
||||||
|
for (int64_t tablet_idx = 0; OB_SUCC(ret) && tablet_idx < batch_tablet_array.count(); ++tablet_idx) {
|
||||||
|
uint64_t task_id = batch_tablet_array.at(tablet_idx);
|
||||||
|
if (OB_FAIL(tablet_columns_map.get_refactored(task_id, column_array))) {
|
||||||
|
LOG_WARN("fail to get tablet columns", K(ret), K(task_id));
|
||||||
|
} else if (column_array.count() != column_ids.count()) { // not all columns checksum reported
|
||||||
|
ret = OB_ERR_UNEXPECTED;
|
||||||
|
LOG_WARN("fail to check column checksum, tablet columns not match",
|
||||||
|
K(ret), K(column_array.count()), K(column_ids.count()));
|
||||||
|
} else if (OB_FAIL(tablet_checksum_status_map.set_refactored(task_id, checksum_status, true))) { // force update
|
||||||
|
LOG_WARN("fail to set tablet column checksum status", K(ret), K(task_id), K(checksum_status));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -249,26 +307,72 @@ int ObDDLChecksumOperator::get_tablet_checksum_record(
|
|||||||
const uint64_t execution_id,
|
const uint64_t execution_id,
|
||||||
const uint64_t table_id,
|
const uint64_t table_id,
|
||||||
const int64_t ddl_task_id,
|
const int64_t ddl_task_id,
|
||||||
|
ObIArray<ObTabletID> &tablet_ids,
|
||||||
ObMySQLProxy &sql_proxy,
|
ObMySQLProxy &sql_proxy,
|
||||||
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_map)
|
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_status_map)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
ObSqlString sql;
|
ObSqlString sql;
|
||||||
const uint64_t exec_tenant_id = ObSchemaUtils::get_exec_tenant_id(tenant_id);
|
const uint64_t exec_tenant_id = ObSchemaUtils::get_exec_tenant_id(tenant_id);
|
||||||
if (OB_UNLIKELY(OB_INVALID_ID == tenant_id || OB_INVALID_ID == execution_id || OB_INVALID_ID == table_id
|
ObMultiVersionSchemaService *schema_service = GCTX.schema_service_;
|
||||||
|| OB_INVALID_ID == ddl_task_id || !tablet_checksum_map.created())) {
|
ObSchemaGetterGuard schema_guard;
|
||||||
|
const ObTableSchema *table_schema = nullptr;
|
||||||
|
common::hash::ObHashMap<uint64_t, ObArray<int64_t>> tablet_columns_map;
|
||||||
|
|
||||||
|
if (OB_UNLIKELY(OB_INVALID_ID == tenant_id || OB_INVALID_ID == execution_id ||
|
||||||
|
OB_INVALID_ID == table_id || OB_INVALID_ID == ddl_task_id ||
|
||||||
|
tablet_ids.count() <= 0 || !tablet_checksum_status_map.created())) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid argument", K(ret), K(tenant_id), K(execution_id), K(table_id), K(ddl_task_id),
|
LOG_WARN("invalid argument",
|
||||||
K(tablet_checksum_map.created()));
|
K(ret), K(tenant_id), K(execution_id), K(table_id), K(ddl_task_id), K(tablet_checksum_status_map.created()));
|
||||||
} else if (OB_FAIL(sql.assign_fmt(
|
} else if (OB_FAIL(schema_service->get_tenant_schema_guard(tenant_id, schema_guard))) {
|
||||||
"SELECT task_id FROM %s "
|
LOG_WARN("get tenant schema guard failed", K(ret), K(tenant_id));
|
||||||
"WHERE execution_id = %ld AND tenant_id = %ld AND table_id = %ld AND ddl_task_id = %ld "
|
} else if (OB_FAIL(schema_guard.get_table_schema(tenant_id, table_id, table_schema))) {
|
||||||
"ORDER BY task_id", OB_ALL_DDL_CHECKSUM_TNAME,
|
LOG_WARN("get table schema failed", K(ret), K(tenant_id), K(table_id));
|
||||||
execution_id, ObSchemaUtils::get_extract_tenant_id(exec_tenant_id, tenant_id),
|
} else if (OB_ISNULL(table_schema)) {
|
||||||
ObSchemaUtils::get_extract_schema_id(exec_tenant_id, table_id), ddl_task_id))) {
|
ret = OB_TABLE_NOT_EXIST;
|
||||||
LOG_WARN("fail to assign fmt", K(ret));
|
LOG_INFO("table not exit", K(ret), K(tenant_id), K(table_id));
|
||||||
} else if (OB_FAIL(get_tablet_checksum_status(sql, tenant_id, sql_proxy, tablet_checksum_map))) {
|
} else {
|
||||||
|
ObArray<ObColDesc> column_ids;
|
||||||
|
if (OB_FAIL(table_schema->get_multi_version_column_descs(column_ids))) {
|
||||||
|
LOG_WARN("fail to get column ids", K(ret), K(tenant_id), K(execution_id), K(ddl_task_id));
|
||||||
|
}
|
||||||
|
int64_t batch_size = 100;
|
||||||
|
ObArray<uint64_t> batch_tablet_array;
|
||||||
|
if (OB_FAIL(tablet_columns_map.create(batch_size, ObModIds::OB_SSTABLE_CREATE_INDEX))) {
|
||||||
|
LOG_WARN("fail to create tablet column map", K(ret));
|
||||||
|
}
|
||||||
|
// check every tablet column checksum, task_id is equal to tablet_id
|
||||||
|
for (int64_t i = 0; OB_SUCC(ret) && i < tablet_ids.count(); ++i) {
|
||||||
|
uint64_t last_tablet_id_id = tablet_ids.at(i).id();
|
||||||
|
if (OB_FAIL(batch_tablet_array.push_back(last_tablet_id_id))) {
|
||||||
|
LOG_WARN("fail to push back tablet_id_id", K(ret), K(tenant_id), K(execution_id), K(ddl_task_id));
|
||||||
|
} else {
|
||||||
|
if ((i != 0 && i % batch_size == 0) /* reach batch size */ || i == tablet_ids.count() - 1 /* reach end */) {
|
||||||
|
if (OB_FAIL(sql.assign_fmt(
|
||||||
|
"SELECT task_id, column_id FROM %s "
|
||||||
|
"WHERE execution_id = %ld AND tenant_id = %ld AND table_id = %ld AND ddl_task_id = %ld AND task_id >= %ld and task_id <= %ld"
|
||||||
|
"ORDER BY task_id",
|
||||||
|
OB_ALL_DDL_CHECKSUM_TNAME,
|
||||||
|
execution_id,
|
||||||
|
ObSchemaUtils::get_extract_tenant_id(exec_tenant_id, tenant_id),
|
||||||
|
ObSchemaUtils::get_extract_schema_id(exec_tenant_id, table_id),
|
||||||
|
ddl_task_id,
|
||||||
|
batch_tablet_array.at(0), // first tablet_id in one batch
|
||||||
|
last_tablet_id_id))) { // last tablet id in one batch
|
||||||
|
LOG_WARN("fail to assign fmt", K(ret), K(tenant_id), K(execution_id), K(ddl_task_id));
|
||||||
|
} else if (OB_FAIL(get_tablet_checksum_status(
|
||||||
|
sql, tenant_id, batch_tablet_array, column_ids, sql_proxy, tablet_columns_map, tablet_checksum_status_map))) {
|
||||||
LOG_WARN("fail to get column checksum", K(ret), K(sql));
|
LOG_WARN("fail to get column checksum", K(ret), K(sql));
|
||||||
|
} else {
|
||||||
|
batch_tablet_array.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tablet_columns_map.created()) {
|
||||||
|
tablet_columns_map.destroy();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
#include "lib/container/ob_array.h"
|
#include "lib/container/ob_array.h"
|
||||||
#include "lib/hash/ob_hashmap.h"
|
#include "lib/hash/ob_hashmap.h"
|
||||||
#include "share/ob_dml_sql_splicer.h"
|
#include "share/ob_dml_sql_splicer.h"
|
||||||
|
#include "share/schema/ob_table_param.h"
|
||||||
|
|
||||||
namespace oceanbase
|
namespace oceanbase
|
||||||
{
|
{
|
||||||
@ -75,6 +76,7 @@ public:
|
|||||||
const uint64_t execution_id,
|
const uint64_t execution_id,
|
||||||
const uint64_t table_id,
|
const uint64_t table_id,
|
||||||
const int64_t ddl_task_id,
|
const int64_t ddl_task_id,
|
||||||
|
ObIArray<ObTabletID> &tablet_ids,
|
||||||
ObMySQLProxy &sql_proxy,
|
ObMySQLProxy &sql_proxy,
|
||||||
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_map);
|
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_map);
|
||||||
static int check_column_checksum(
|
static int check_column_checksum(
|
||||||
@ -103,8 +105,15 @@ private:
|
|||||||
static int get_tablet_checksum_status(
|
static int get_tablet_checksum_status(
|
||||||
const ObSqlString &sql,
|
const ObSqlString &sql,
|
||||||
const uint64_t tenant_id,
|
const uint64_t tenant_id,
|
||||||
|
ObIArray<uint64_t> &batch_tablet_ids,
|
||||||
|
ObIArray<ObColDesc> &column_ids,
|
||||||
common::ObMySQLProxy &sql_proxy,
|
common::ObMySQLProxy &sql_proxy,
|
||||||
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_map);
|
common::hash::ObHashMap<uint64_t, ObArray<int64_t>> &tablet_columns_map,
|
||||||
|
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_status_map);
|
||||||
|
static int construct_tablet_column_map(
|
||||||
|
const uint64_t tablet_id,
|
||||||
|
const int64_t column_id,
|
||||||
|
common::hash::ObHashMap<uint64_t, ObArray<int64_t>> &tablet_columns_map);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace share
|
} // end namespace share
|
||||||
|
|||||||
@ -1293,7 +1293,7 @@ int ObCheckTabletDataComplementOp::do_check_tablets_merge_status(
|
|||||||
}
|
}
|
||||||
// handle every addr tablet
|
// handle every addr tablet
|
||||||
for (hash::ObHashMap<ObAddr, ObArray<ObTabletID>>::const_iterator ip_iter = ip_tablets_map.begin();
|
for (hash::ObHashMap<ObAddr, ObArray<ObTabletID>>::const_iterator ip_iter = ip_tablets_map.begin();
|
||||||
ip_iter != ip_tablets_map.end() && OB_SUCC(ret); ++ip_iter) {
|
OB_SUCC(ret) && ip_iter != ip_tablets_map.end(); ++ip_iter) {
|
||||||
const ObAddr & dest_ip = ip_iter->first;
|
const ObAddr & dest_ip = ip_iter->first;
|
||||||
const ObArray<ObTabletID> &tablet_array = ip_iter->second;
|
const ObArray<ObTabletID> &tablet_array = ip_iter->second;
|
||||||
if (OB_FAIL(arg.tablet_ids_.assign(tablet_array))) {
|
if (OB_FAIL(arg.tablet_ids_.assign(tablet_array))) {
|
||||||
@ -1307,13 +1307,14 @@ int ObCheckTabletDataComplementOp::do_check_tablets_merge_status(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (OB_SUCC(ret)) { // handle batch result
|
// handle batch result
|
||||||
int tmp_ret = OB_SUCCESS;
|
int tmp_ret = OB_SUCCESS;
|
||||||
common::ObArray<int> return_ret_array;
|
common::ObArray<int> return_ret_array;
|
||||||
if (OB_SUCCESS != (tmp_ret = proxy.wait_all(return_ret_array))) {
|
if (OB_SUCCESS != (tmp_ret = proxy.wait_all(return_ret_array))) {
|
||||||
LOG_WARN("rpc proxy wait failed", K(tmp_ret));
|
LOG_WARN("rpc proxy wait failed", K(tmp_ret));
|
||||||
ret = OB_SUCCESS == ret ? tmp_ret : ret;
|
ret = OB_SUCCESS == ret ? tmp_ret : ret;
|
||||||
} else if (return_ret_array.count() != ip_tablets_map.size()) {
|
} else if (OB_SUCC(ret)) {
|
||||||
|
if (return_ret_array.count() != ip_tablets_map.size()) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("rpc proxy rsp size not equal to send size", K(ret), K(return_ret_array.count()), K(ip_tablets_map.size()));
|
LOG_WARN("rpc proxy rsp size not equal to send size", K(ret), K(return_ret_array.count()), K(ip_tablets_map.size()));
|
||||||
} else {
|
} else {
|
||||||
@ -1398,7 +1399,7 @@ int ObCheckTabletDataComplementOp::check_tablet_merge_status(
|
|||||||
int64_t one_batch_build_succ_count = 0;
|
int64_t one_batch_build_succ_count = 0;
|
||||||
for (int64_t i = 0; OB_SUCC(ret) && i < tablet_ids.count(); ++i) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < tablet_ids.count(); ++i) {
|
||||||
const ObTabletID &tablet_id = tablet_ids.at(i);
|
const ObTabletID &tablet_id = tablet_ids.at(i);
|
||||||
if (construct_ls_tablet_map(tenant_id, tablet_id, ls_tablets_map)) {
|
if (OB_FAIL(construct_ls_tablet_map(tenant_id, tablet_id, ls_tablets_map))) {
|
||||||
LOG_WARN("construct_tablet_ls_map fail", K(ret), K(tenant_id), K(tablet_id));
|
LOG_WARN("construct_tablet_ls_map fail", K(ret), K(tenant_id), K(tablet_id));
|
||||||
} else {
|
} else {
|
||||||
if ((i != 0 && i % batch_size == 0) /* reach batch size */ || i == tablet_ids.count() - 1 /* reach end */) {
|
if ((i != 0 && i % batch_size == 0) /* reach batch size */ || i == tablet_ids.count() - 1 /* reach end */) {
|
||||||
@ -1448,7 +1449,7 @@ int ObCheckTabletDataComplementOp::check_tablet_checksum_update_status(
|
|||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
tablet_checksum_status = false;
|
tablet_checksum_status = false;
|
||||||
common::hash::ObHashMap<uint64_t, bool> tablet_checksum_map;
|
common::hash::ObHashMap<uint64_t, bool> tablet_checksum_status_map;
|
||||||
int64_t tablet_count = tablet_ids.count();
|
int64_t tablet_count = tablet_ids.count();
|
||||||
|
|
||||||
if (OB_UNLIKELY(OB_INVALID_ID == tenant_id || OB_INVALID_ID == index_table_id ||
|
if (OB_UNLIKELY(OB_INVALID_ID == tenant_id || OB_INVALID_ID == index_table_id ||
|
||||||
@ -1456,24 +1457,25 @@ int ObCheckTabletDataComplementOp::check_tablet_checksum_update_status(
|
|||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("fail to check and wait complement task",
|
LOG_WARN("fail to check and wait complement task",
|
||||||
K(ret), K(tenant_id), K(index_table_id), K(tablet_ids), K(execution_id), K(ddl_task_id));
|
K(ret), K(tenant_id), K(index_table_id), K(tablet_ids), K(execution_id), K(ddl_task_id));
|
||||||
} else if (OB_FAIL(tablet_checksum_map.create(tablet_count, ObModIds::OB_SSTABLE_CREATE_INDEX))) {
|
} else if (OB_FAIL(tablet_checksum_status_map.create(tablet_count, ObModIds::OB_SSTABLE_CREATE_INDEX))) {
|
||||||
LOG_WARN("fail to create column checksum map", K(ret));
|
LOG_WARN("fail to create column checksum map", K(ret));
|
||||||
} else if (OB_FAIL(ObDDLChecksumOperator::get_tablet_checksum_record(
|
} else if (OB_FAIL(ObDDLChecksumOperator::get_tablet_checksum_record(
|
||||||
tenant_id,
|
tenant_id,
|
||||||
execution_id,
|
execution_id,
|
||||||
index_table_id,
|
index_table_id,
|
||||||
ddl_task_id,
|
ddl_task_id,
|
||||||
|
tablet_ids,
|
||||||
GCTX.root_service_->get_sql_proxy(),
|
GCTX.root_service_->get_sql_proxy(),
|
||||||
tablet_checksum_map))) {
|
tablet_checksum_status_map))) {
|
||||||
LOG_WARN("fail to get tablet checksum status",
|
LOG_WARN("fail to get tablet checksum status",
|
||||||
K(ret), K(tenant_id), K(execution_id), K(index_table_id), K(ddl_task_id));
|
K(ret), K(tenant_id), K(execution_id), K(index_table_id), K(ddl_task_id));
|
||||||
} else {
|
} else {
|
||||||
int tablet_idx = 0;
|
int64_t tablet_idx = 0;
|
||||||
for (tablet_idx = 0; OB_SUCC(ret) && tablet_idx < tablet_count; ++tablet_idx) {
|
for (tablet_idx = 0; OB_SUCC(ret) && tablet_idx < tablet_count; ++tablet_idx) {
|
||||||
const ObTabletID &tablet_id = tablet_ids.at(tablet_idx);
|
const ObTabletID &tablet_id = tablet_ids.at(tablet_idx);
|
||||||
uint64_t tablet_id_id = tablet_id.id();
|
uint64_t tablet_id_id = tablet_id.id();
|
||||||
bool status = false;
|
bool status = false;
|
||||||
if (OB_FAIL(tablet_checksum_map.get_refactored(tablet_id_id, status))) {
|
if (OB_FAIL(tablet_checksum_status_map.get_refactored(tablet_id_id, status))) {
|
||||||
LOG_WARN("fail to get tablet checksum record from map", K(ret), K(tablet_id_id));
|
LOG_WARN("fail to get tablet checksum record from map", K(ret), K(tablet_id_id));
|
||||||
} else if (!status) {
|
} else if (!status) {
|
||||||
break;
|
break;
|
||||||
@ -1488,8 +1490,8 @@ int ObCheckTabletDataComplementOp::check_tablet_checksum_update_status(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tablet_checksum_map.created()) {
|
if (tablet_checksum_status_map.created()) {
|
||||||
tablet_checksum_map.destroy();
|
tablet_checksum_status_map.destroy();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user