fix create index hange when ddl executes too frequent of a tenant

This commit is contained in:
Charles0429
2023-02-09 15:52:56 +00:00
committed by ob-robot
parent 966b2939b0
commit 5134763d1e
2 changed files with 3 additions and 7 deletions

View File

@ -1122,13 +1122,6 @@ int ObIndexBuildTask::enable_index()
LOG_WARN("create global index in slave cluster is not allowed", K(ret), K(index_table_id_)); LOG_WARN("create global index in slave cluster is not allowed", K(ret), K(index_table_id_));
} else if (OB_FAIL(schema_service.get_tenant_schema_guard(tenant_id_, schema_guard))) { } else if (OB_FAIL(schema_service.get_tenant_schema_guard(tenant_id_, schema_guard))) {
LOG_WARN("fail to get schema guard", K(ret), K(tenant_id_)); LOG_WARN("fail to get schema guard", K(ret), K(tenant_id_));
} else if (OB_FAIL(schema_service.get_schema_version_in_inner_table(
root_service_->get_sql_proxy(), schema_status, version_in_inner_table))) {
LOG_WARN("fail to get version in inner table", K(ret));
} else if (OB_FAIL(schema_guard.get_schema_version(tenant_id_, local_schema_version))) {
LOG_WARN("fail to get schema version from guard", K(ret), K(tenant_id_));
} else if (version_in_inner_table > local_schema_version) {
// by pass, this server may not get the newest schema
} else if (OB_FAIL(schema_guard.check_table_exist(tenant_id_, index_table_id_, index_table_exist))) { } else if (OB_FAIL(schema_guard.check_table_exist(tenant_id_, index_table_id_, index_table_exist))) {
LOG_WARN("fail to check table exist", K(ret), K_(tenant_id), K(index_table_id_)); LOG_WARN("fail to check table exist", K(ret), K_(tenant_id), K(index_table_id_));
} else if (!index_table_exist) { } else if (!index_table_exist) {

View File

@ -19666,6 +19666,9 @@ int ObDDLService::update_index_status(const obrpc::ObUpdateIndexStatusArg &arg)
int64_t refreshed_schema_version = 0; int64_t refreshed_schema_version = 0;
if (OB_FAIL(schema_guard.get_schema_version(tenant_id, refreshed_schema_version))) { if (OB_FAIL(schema_guard.get_schema_version(tenant_id, refreshed_schema_version))) {
LOG_WARN("failed to get tenant schema version", KR(ret), K(tenant_id)); LOG_WARN("failed to get tenant schema version", KR(ret), K(tenant_id));
} else if (is_available_index_status(new_status) && !table->is_unavailable_index()) {
ret = OB_EAGAIN;
LOG_WARN("set index status to available, but previous status is not unavailable, which is not expected behavior", KR(ret), KPC(table), K(new_status));
} else if (OB_FAIL(trans.start(sql_proxy_, tenant_id, refreshed_schema_version))) { } else if (OB_FAIL(trans.start(sql_proxy_, tenant_id, refreshed_schema_version))) {
LOG_WARN("start transaction failed", KR(ret), K(tenant_id), K(refreshed_schema_version)); LOG_WARN("start transaction failed", KR(ret), K(tenant_id), K(refreshed_schema_version));
} else if (OB_FAIL(ddl_operator.update_index_status( } else if (OB_FAIL(ddl_operator.update_index_status(