[FTS][BUG.FIX] throw the real error code.

This commit is contained in:
obdev 2024-12-13 11:15:20 +00:00 committed by ob-robot
parent 0a55547d18
commit 7d96b2b3da
3 changed files with 11 additions and 90 deletions

View File

@ -369,6 +369,7 @@ GLOBAL_ERRSIM_POINT_DEF(540, EN_POST_VEC_INDEX_WAIT_AUX_TBL_COMPLEMENT_ERR, "");
GLOBAL_ERRSIM_POINT_DEF(541, EN_FTS_INDEX_BUILD_DOC_ROWKEY_FAILED, "");
GLOBAL_ERRSIM_POINT_DEF(542, EN_FTS_INDEX_BUILD_INDEX_FAILED, "");
GLOBAL_ERRSIM_POINT_DEF(543, EN_FTS_INDEX_BUILD_DOC_WORD_FAILED, "");
GLOBAL_ERRSIM_POINT_DEF(544, FTS_INDEX_SUBTASK_FAILED, "");
// SQL Optimizer related 551-599
GLOBAL_ERRSIM_POINT_DEF(551, EN_EXPLAIN_GENERATE_PLAN_WITH_OUTLINE, "Used to enable outline validity check for explain query");
GLOBAL_ERRSIM_POINT_DEF(552, EN_ENABLE_AUTO_DOP_FORCE_PARALLEL_PLAN, "Used to generate parallel plan with random dop");

View File

@ -345,24 +345,9 @@ int ObFtsIndexBuildTask::check_health()
object_id_,
is_data_table_exist))) {
LOG_WARN("check data table exist failed", K(ret), K(tenant_id_), K(object_id_));
} else if (OB_FAIL(check_aux_table_schemas_exist(is_all_indexes_exist))) {
LOG_WARN("check aux index table exist failed", K(ret), K(tenant_id_));
} else if (status != ObDDLTaskStatus::FAIL && (!is_data_table_exist || !is_all_indexes_exist)) {
} else if (status != ObDDLTaskStatus::FAIL && !is_data_table_exist) {
ret = OB_TABLE_NOT_EXIST;
LOG_WARN("data table or index table not exist", K(ret), K(is_data_table_exist),
K(is_all_indexes_exist));
} else if (OB_FAIL(schema_guard.get_table_schema(tenant_id_,
index_table_id_,
index_schema))) {
LOG_WARN("get table schema failed", K(ret), K(tenant_id_), K(index_table_id_));
} else if (OB_ISNULL(index_schema)) {
ret = OB_SCHEMA_ERROR;
LOG_WARN("index schema is null, but index table exist", K(ret),
K(index_table_id_));
} else if (ObIndexStatus::INDEX_STATUS_INDEX_ERROR == index_schema->get_index_status()) {
ret = OB_SUCCESS == ret_code_ ? OB_ERR_ADD_INDEX : ret_code_;
LOG_WARN("index status error", K(ret), K(index_table_id_), K(index_schema->get_table_name_str()),
K(index_schema->get_index_status()));
LOG_WARN("data table not exist", K(ret), K(is_data_table_exist));
}
#ifdef ERRSIM
if (OB_SUCC(ret)) {
@ -385,78 +370,6 @@ int ObFtsIndexBuildTask::check_health()
return ret;
}
int ObFtsIndexBuildTask::check_aux_table_schemas_exist(bool &is_all_exist)
{
int ret = OB_SUCCESS;
is_all_exist = false;
const ObDDLTaskStatus status = static_cast<ObDDLTaskStatus>(task_status_);
ObMultiVersionSchemaService &schema_service = root_service_->get_schema_service();
ObSchemaGetterGuard schema_guard;
const ObTableSchema *index_schema = nullptr;
if (OB_FAIL(schema_service.get_tenant_schema_guard(tenant_id_, schema_guard))) {
LOG_WARN("get tenant schema guard failed", K(ret), K(tenant_id_));
} else {
bool rowkey_doc_exist = true;
bool doc_rowkey_exist = true;
bool domain_index_aux_exist = true;
bool fts_doc_word_exist = true;
if (status <= ObDDLTaskStatus::GENERATE_DOC_AUX_SCHEMA) {
is_all_exist = true;
if (OB_INVALID_ID != rowkey_doc_aux_table_id_) {
if (OB_FAIL(schema_guard.check_table_exist(tenant_id_,
rowkey_doc_aux_table_id_,
rowkey_doc_exist))) {
LOG_WARN("check rowkey doc table exist failed", K(ret), K(tenant_id_),
K(rowkey_doc_aux_table_id_));
} else {
is_all_exist &= rowkey_doc_exist;
}
}
if (OB_INVALID_ID != domain_index_aux_table_id_) {
if (OB_FAIL(schema_guard.check_table_exist(tenant_id_,
domain_index_aux_table_id_,
domain_index_aux_exist))) {
LOG_WARN("check fts index aux table exist failed", K(ret), K(tenant_id_),
K(domain_index_aux_table_id_));
} else {
is_all_exist &= domain_index_aux_exist;
}
}
} else {
if (OB_FAIL(schema_guard.check_table_exist(tenant_id_,
rowkey_doc_aux_table_id_,
rowkey_doc_exist))) {
LOG_WARN("check rowkey doc table exist failed", K(ret), K(tenant_id_),
K(rowkey_doc_aux_table_id_));
} else if (OB_FAIL(schema_guard.check_table_exist(tenant_id_,
doc_rowkey_aux_table_id_,
doc_rowkey_exist))) {
LOG_WARN("check doc rowkey table exist failed", K(ret), K(tenant_id_),
K(doc_rowkey_aux_table_id_));
} else if (OB_FAIL(schema_guard.check_table_exist(tenant_id_,
domain_index_aux_table_id_,
domain_index_aux_exist))) {
LOG_WARN("check fts index aux table exist failed", K(ret), K(tenant_id_),
K(domain_index_aux_table_id_));
} else if (is_fts_task()
&& OB_FAIL(schema_guard.check_table_exist(tenant_id_,
fts_doc_word_aux_table_id_,
fts_doc_word_exist))) {
LOG_WARN("check fts doc word table exist failed", K(ret), K(tenant_id_),
K(fts_doc_word_aux_table_id_));
} else {
is_all_exist = (rowkey_doc_exist && doc_rowkey_exist &&
domain_index_aux_exist && fts_doc_word_exist);
if (!is_all_exist) {
LOG_WARN("fts aux table not exist", K(rowkey_doc_exist),
K(doc_rowkey_exist), K(domain_index_aux_exist), K(fts_doc_word_exist));
}
}
}
}
return ret;
}
int ObFtsIndexBuildTask::get_next_status(share::ObDDLTaskStatus &next_status)
{
int ret = OB_SUCCESS;

View File

@ -1119,7 +1119,14 @@ int ObIndexBuildTask::wait_data_complement()
}
}
}
#ifdef ERRSIM
if (OB_SUCC(ret)) {
ret = OB_E(EventTable::FTS_INDEX_SUBTASK_FAILED) OB_SUCCESS;
if (OB_FAIL(ret)) {
LOG_WARN("errsim ddl execute building the subtask of fts index failed", KR(ret));
}
}
#endif
if (state_finished || OB_FAIL(ret)) {
(void)switch_status(ObDDLTaskStatus::VALIDATE_CHECKSUM, true, ret);
LOG_INFO("wait data complement finished", K(ret), K(*this));