[CP] Check rs status while process async task

This commit is contained in:
tino247
2023-05-17 11:11:34 +00:00
committed by ob-robot
parent a47570d7f6
commit 0a76ae999f
7 changed files with 46 additions and 340 deletions

View File

@ -132,13 +132,20 @@ int ObTenantChecker::check_create_tenant_end_()
// skip
} else if (OB_FAIL(schema_service_->get_tenant_ids(tenant_ids))) {
LOG_WARN("get_tenant_ids failed", K(ret));
} else if (OB_ISNULL(GCTX.root_service_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("rootservice is null", KR(ret));
} else {
const ObSimpleTenantSchema *tenant_schema = NULL;
int64_t schema_version = OB_INVALID_VERSION;
int64_t baseline_schema_version = OB_INVALID_VERSION;
FOREACH_CNT(tenant_id, tenant_ids) {
// overwrite ret
if (OB_FAIL(schema_service_->get_tenant_schema_guard(*tenant_id, schema_guard))) {
if (!GCTX.root_service_->is_full_service()) {
ret = OB_CANCELED;
LOG_WARN("rs is not in full service", KR(ret));
break;
} else if (OB_FAIL(schema_service_->get_tenant_schema_guard(*tenant_id, schema_guard))) {
LOG_WARN("get_schema_guard failed", KR(ret), K(*tenant_id));
} else if (OB_FAIL(schema_guard.get_schema_version(*tenant_id, schema_version))) {
LOG_WARN("fail to get tenant schema version", KR(ret), K(*tenant_id));
@ -295,13 +302,22 @@ int ObTableGroupChecker::inspect_(
LOG_WARN("get schema guard failed", K(ret), K(tenant_id));
} else if (OB_FAIL(schema_guard.get_table_ids_in_tenant(tenant_id, table_ids))) {
LOG_WARN("fail to get table_ids", KR(ret), K(tenant_id));
} else if (OB_ISNULL(GCTX.root_service_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("rootservice is null", KR(ret));
} else if (!GCTX.root_service_->is_full_service()) {
ret = OB_CANCELED;
LOG_WARN("rs is not in full service", KR(ret));
} else {
for (int64_t i = 0; OB_SUCC(ret) && i < table_ids.count(); i++) {
const uint64_t table_id = table_ids.at(i);
const ObTableSchema *table = NULL;
// schema guard cannot be used repeatedly in iterative logic,
// otherwise it will cause a memory hike in schema cache
if (OB_FAIL(schema_service_.get_tenant_schema_guard(tenant_id, schema_guard))) {
if (!GCTX.root_service_->is_full_service()) {
ret = OB_CANCELED;
LOG_WARN("rs is not in full service", KR(ret));
} else if (OB_FAIL(schema_service_.get_tenant_schema_guard(tenant_id, schema_guard))) {
LOG_WARN("get schema guard failed", K(ret), K(tenant_id));
} else if (OB_FAIL(schema_guard.get_table_schema(tenant_id, table_id, table))) {
LOG_WARN("get table schema failed", K(ret), KT(table_id));
@ -766,7 +782,11 @@ int ObRootInspection::check_all()
tmp = OB_SUCCESS;
ObRsJobType job_type = upgrade_job_type_array[i];
if (job_type > JOB_TYPE_INVALID && job_type < JOB_TYPE_MAX) {
if (OB_SUCCESS != (tmp = ObUpgradeUtils::check_upgrade_job_passed(job_type))) {
if (OB_SUCCESS != (tmp = check_cancel())) {
LOG_WARN("check_cancel failed", KR(ret), K(tmp));
ret = (OB_SUCCESS == ret) ? tmp : ret;
break;
} else if (OB_SUCCESS != (tmp = ObUpgradeUtils::check_upgrade_job_passed(job_type))) {
LOG_WARN("fail to check upgrade job passed", K(tmp), K(job_type));
if (OB_RUN_JOB_NOT_SUCCESS != tmp) {
ret = (OB_SUCCESS == ret) ? tmp : ret;
@ -1923,6 +1943,11 @@ int ObRootInspection::check_cancel()
int ret = OB_SUCCESS;
if (stopped_) {
ret = OB_CANCELED;
} else if (OB_ISNULL(GCTX.root_service_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("rootservice is null", KR(ret));
} else if (!GCTX.root_service_->is_full_service()) {
ret = OB_CANCELED;
}
return ret;
}