fix check chksum relies on the not-sorted tablet ids.

This commit is contained in:
obdev
2024-01-16 02:42:56 +00:00
committed by ob-robot
parent ded68a0c9e
commit 38dbc31c90
4 changed files with 8 additions and 12 deletions

View File

@ -271,7 +271,7 @@ int ObDDLChecksumOperator::get_tablet_checksum_record(
const uint64_t execution_id,
const uint64_t table_id,
const int64_t ddl_task_id,
ObIArray<ObTabletID> &tablet_ids,
const ObIArray<ObTabletID> &tablet_ids,
ObMySQLProxy &sql_proxy,
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_status_map)
{
@ -294,7 +294,7 @@ int ObDDLChecksumOperator::get_tablet_checksum_record(
// 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();
const 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 {

View File

@ -85,7 +85,7 @@ public:
const uint64_t execution_id,
const uint64_t table_id,
const int64_t ddl_task_id,
ObIArray<ObTabletID> &tablet_ids,
const ObIArray<ObTabletID> &tablet_ids,
ObMySQLProxy &sql_proxy,
common::hash::ObHashMap<uint64_t, bool> &tablet_checksum_map);
static int check_column_checksum(

View File

@ -408,9 +408,9 @@ int ObDDLUtil::get_tablets(
LOG_WARN("get table schema failed", K(ret), K(tenant_id), K(table_id));
} else if (OB_ISNULL(table_schema)) {
ret = OB_TABLE_NOT_EXIST;
LOG_WARN("get table schema failed", K(ret), K(table_id));
LOG_WARN("get table schema failed", K(ret), K(tenant_id), K(table_id));
} else if (OB_FAIL(table_schema->get_tablet_ids(tablet_ids))) {
LOG_WARN("get tablets failed", K(ret), K(*table_schema));
LOG_WARN("get tablets failed", K(ret), KPC(table_schema));
}
return ret;
}
@ -2216,7 +2216,7 @@ int ObCheckTabletDataComplementOp::check_tablet_checksum_update_status(
const uint64_t index_table_id,
const uint64_t ddl_task_id,
const int64_t execution_id,
ObIArray<ObTabletID> &tablet_ids,
const ObIArray<ObTabletID> &tablet_ids,
bool &is_checksums_all_report)
{
int ret = OB_SUCCESS;
@ -2336,6 +2336,7 @@ int ObCheckTabletDataComplementOp::check_finish_report_checksum(
LOG_WARN("fail to check report checksum finished", K(ret), K(tenant_id), K(index_table_id), K(execution_id), K(ddl_task_id));
} else if (OB_FAIL(ObDDLUtil::get_tablets(tenant_id, index_table_id, dest_tablet_ids))) {
LOG_WARN("fail to get tablets", K(ret), K(tenant_id), K(index_table_id));
} else if (OB_FALSE_IT(std::sort(dest_tablet_ids.begin(), dest_tablet_ids.end()))) { // sort in ASC order.
} else if (OB_FAIL(check_tablet_checksum_update_status(tenant_id, index_table_id, ddl_task_id, execution_id, dest_tablet_ids, is_checksums_all_report))) {
LOG_WARN("fail to check tablet checksum update status, maybe EAGAIN", K(ret), K(tenant_id), K(dest_tablet_ids), K(execution_id));
} else if (!is_checksums_all_report) {

View File

@ -363,11 +363,6 @@ public:
const int64_t table_id,
int64_t &tablet_count);
// get all tablets of a table by table_schema
static int get_tablets(
const share::schema::ObTableSchema &table_schema,
common::ObIArray<common::ObTabletID> &tablet_ids);
// check if the major sstable of a table are exist in all needed replicas
static int check_major_sstable_complete(
const uint64_t data_table_id,
@ -673,7 +668,7 @@ private:
const uint64_t index_table_id,
const uint64_t ddl_task_id,
const int64_t execution_id,
ObIArray<ObTabletID> &tablet_ids,
const ObIArray<ObTabletID> &tablet_ids,
bool &tablet_checksum_status);
};