fix create index hange when ddl executes too frequent of a tenant
This commit is contained in:
@ -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) {
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user