add tenant schema status check before alter system set tenant config
This commit is contained in:
@ -950,13 +950,26 @@ int ObAdminSetConfig::update_config(obrpc::ObAdminSetConfigArg &arg, int64_t new
|
|||||||
} else if (item->tenant_ids_.size() > 0) {
|
} else if (item->tenant_ids_.size() > 0) {
|
||||||
// tenant config
|
// tenant config
|
||||||
ObDMLSqlSplicer dml;
|
ObDMLSqlSplicer dml;
|
||||||
|
share::schema::ObSchemaGetterGuard schema_guard;
|
||||||
|
const share::schema::ObSimpleTenantSchema *tenant_schema = NULL;
|
||||||
|
if (OB_FAIL(GSCHEMASERVICE.get_tenant_schema_guard(
|
||||||
|
OB_SYS_TENANT_ID, schema_guard))) {
|
||||||
|
LOG_WARN("fail to get sys tenant schema guard", KR(ret));
|
||||||
|
} else {
|
||||||
for (uint64_t tenant_id : item->tenant_ids_) {
|
for (uint64_t tenant_id : item->tenant_ids_) {
|
||||||
const char *table_name = (ObAdminSetConfig::OB_PARAMETER_SEED_ID == tenant_id ?
|
const char *table_name = (ObAdminSetConfig::OB_PARAMETER_SEED_ID == tenant_id ?
|
||||||
OB_ALL_SEED_PARAMETER_TNAME : OB_TENANT_PARAMETER_TNAME);
|
OB_ALL_SEED_PARAMETER_TNAME : OB_TENANT_PARAMETER_TNAME);
|
||||||
tenant_id = (ObAdminSetConfig::OB_PARAMETER_SEED_ID == tenant_id ? OB_SYS_TENANT_ID : tenant_id);
|
tenant_id = (ObAdminSetConfig::OB_PARAMETER_SEED_ID == tenant_id ? OB_SYS_TENANT_ID : tenant_id);
|
||||||
uint64_t exec_tenant_id = gen_meta_tenant_id(tenant_id);
|
uint64_t exec_tenant_id = gen_meta_tenant_id(tenant_id);
|
||||||
dml.reset();
|
dml.reset();
|
||||||
if (OB_FAIL(dml.add_pk_column("tenant_id", tenant_id))
|
if (OB_FAIL(schema_guard.get_tenant_info(tenant_id, tenant_schema))) {
|
||||||
|
LOG_WARN("failed to get tenant ids", KR(ret), K(tenant_id));
|
||||||
|
} else if (OB_ISNULL(tenant_schema)) {
|
||||||
|
ret = OB_TENANT_NOT_EXIST;
|
||||||
|
LOG_WARN("tenant not exist", KR(ret), K(tenant_id));
|
||||||
|
} else if (!tenant_schema->is_normal()) {
|
||||||
|
//tenant not normal, maybe tenant not ready, cannot add tenant config
|
||||||
|
} else if (OB_FAIL(dml.add_pk_column("tenant_id", tenant_id))
|
||||||
|| OB_FAIL(dml.add_pk_column("zone", item->zone_.ptr()))
|
|| OB_FAIL(dml.add_pk_column("zone", item->zone_.ptr()))
|
||||||
|| OB_FAIL(dml.add_pk_column("svr_type", print_server_role(OB_SERVER)))
|
|| OB_FAIL(dml.add_pk_column("svr_type", print_server_role(OB_SERVER)))
|
||||||
|| OB_FAIL(dml.add_pk_column(K(svr_ip)))
|
|| OB_FAIL(dml.add_pk_column(K(svr_ip)))
|
||||||
@ -1005,6 +1018,7 @@ int ObAdminSetConfig::update_config(obrpc::ObAdminSetConfigArg &arg, int64_t new
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} // for
|
} // for
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// sys config
|
// sys config
|
||||||
ObDMLSqlSplicer dml;
|
ObDMLSqlSplicer dml;
|
||||||
|
|||||||
Reference in New Issue
Block a user