Fix async_refresh_schema() problem
This commit is contained in:
@ -2375,15 +2375,15 @@ int ObMultiVersionSchemaService::async_refresh_schema(
|
|||||||
bool check_formal = ObSchemaService::is_formal_version(schema_version);
|
bool check_formal = ObSchemaService::is_formal_version(schema_version);
|
||||||
if (!check_inner_stat()) {
|
if (!check_inner_stat()) {
|
||||||
ret = OB_INNER_STAT_ERROR;
|
ret = OB_INNER_STAT_ERROR;
|
||||||
LOG_WARN("inner stat error", K(ret));
|
LOG_WARN("inner stat error", KR(ret));
|
||||||
} else if (OB_INVALID_TENANT_ID == tenant_id
|
} else if (OB_INVALID_TENANT_ID == tenant_id
|
||||||
|| OB_INVALID_ID == tenant_id) {
|
|| OB_INVALID_ID == tenant_id) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid arg", K(ret), K(tenant_id), K(schema_version));
|
LOG_WARN("invalid arg", KR(ret), K(tenant_id), K(schema_version));
|
||||||
} else if (OB_FAIL(get_tenant_refreshed_schema_version(
|
} else if (OB_FAIL(get_tenant_refreshed_schema_version(
|
||||||
tenant_id, local_schema_version))) {
|
tenant_id, local_schema_version))) {
|
||||||
LOG_WARN("fail to get tenant refreshed schema version",
|
LOG_WARN("fail to get tenant refreshed schema version",
|
||||||
K(ret), K(tenant_id), K(schema_version));
|
KR(ret), K(tenant_id), K(schema_version));
|
||||||
} else if (local_schema_version >= schema_version
|
} else if (local_schema_version >= schema_version
|
||||||
&& (!check_formal || ObSchemaService::is_formal_version(local_schema_version))) {
|
&& (!check_formal || ObSchemaService::is_formal_version(local_schema_version))) {
|
||||||
// do nothing
|
// do nothing
|
||||||
@ -2396,23 +2396,30 @@ int ObMultiVersionSchemaService::async_refresh_schema(
|
|||||||
if (THIS_WORKER.is_timeout()
|
if (THIS_WORKER.is_timeout()
|
||||||
|| (INT64_MAX == THIS_WORKER.get_timeout_ts() && retry_cnt >= MAX_RETRY_CNT)) {
|
|| (INT64_MAX == THIS_WORKER.get_timeout_ts() && retry_cnt >= MAX_RETRY_CNT)) {
|
||||||
ret = OB_TIMEOUT;
|
ret = OB_TIMEOUT;
|
||||||
LOG_WARN("already timeout", K(ret), K(tenant_id), K(schema_version));
|
LOG_WARN("already timeout", KR(ret), K(tenant_id), K(schema_version));
|
||||||
} else if (OB_FAIL(get_tenant_refreshed_schema_version(
|
} else if (OB_FAIL(get_tenant_refreshed_schema_version(
|
||||||
tenant_id, local_schema_version))) {
|
tenant_id, local_schema_version))) {
|
||||||
LOG_WARN("fail to get tenant refreshed schema version",
|
LOG_WARN("fail to get tenant refreshed schema version",
|
||||||
K(ret), K(tenant_id), K(schema_version));
|
KR(ret), K(tenant_id), K(schema_version));
|
||||||
} else if (local_schema_version >= schema_version
|
} else if (local_schema_version >= schema_version
|
||||||
&& (!check_formal || ObSchemaService::is_formal_version(local_schema_version))) {
|
&& (!check_formal || ObSchemaService::is_formal_version(local_schema_version))) {
|
||||||
// success
|
// success
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
if (0 == retry_cnt % SUBMIT_TASK_FREQUENCE) {
|
if (0 == retry_cnt % SUBMIT_TASK_FREQUENCE) {
|
||||||
|
{
|
||||||
bool is_dropped = false;
|
bool is_dropped = false;
|
||||||
if (OB_FAIL(check_if_tenant_has_been_dropped(tenant_id, is_dropped))) {
|
ObSchemaGetterGuard guard;
|
||||||
|
if (OB_FAIL(get_tenant_schema_guard(OB_SYS_TENANT_ID, guard))) {
|
||||||
|
LOG_WARN("fail to get schema guard", KR(ret));
|
||||||
|
} else if (OB_FAIL(guard.check_if_tenant_has_been_dropped(tenant_id, is_dropped))) {
|
||||||
LOG_WARN("fail to check if tenant has been dropped", KR(ret), K(tenant_id));
|
LOG_WARN("fail to check if tenant has been dropped", KR(ret), K(tenant_id));
|
||||||
} else if (is_dropped) {
|
} else if (is_dropped) {
|
||||||
ret = OB_TENANT_HAS_BEEN_DROPPED;
|
ret = OB_TENANT_HAS_BEEN_DROPPED;
|
||||||
LOG_WARN("tenant has been dropped", KR(ret), K(tenant_id));
|
LOG_WARN("tenant has been dropped", KR(ret), K(tenant_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (OB_FAIL(ret)) {
|
||||||
} else if (OB_ISNULL(GCTX.ob_service_)) {
|
} else if (OB_ISNULL(GCTX.ob_service_)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("observice is null", K(ret));
|
LOG_WARN("observice is null", K(ret));
|
||||||
@ -2422,7 +2429,7 @@ int ObMultiVersionSchemaService::async_refresh_schema(
|
|||||||
ret = OB_SUCCESS;
|
ret = OB_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
LOG_WARN("fail to submit async refresh schema task",
|
LOG_WARN("fail to submit async refresh schema task",
|
||||||
K(ret), K(tenant_id), K(schema_version));
|
KR(ret), K(tenant_id), K(schema_version));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user