From e825de1713fcb54ff8b05467fffc92c66c9c00da Mon Sep 17 00:00:00 2001 From: LiefB <954800091@qq.com> Date: Thu, 15 Jun 2023 03:24:06 +0000 Subject: [PATCH] fix major freeze about tenants with !normal status --- .../freeze/ob_major_freeze_helper.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/rootserver/freeze/ob_major_freeze_helper.cpp b/src/rootserver/freeze/ob_major_freeze_helper.cpp index 8017c19f79..ce037df0dd 100644 --- a/src/rootserver/freeze/ob_major_freeze_helper.cpp +++ b/src/rootserver/freeze/ob_major_freeze_helper.cpp @@ -148,9 +148,22 @@ int ObMajorFreezeHelper::get_all_tenant_freeze_info( LOG_WARN("fail to get tenant ids", KR(ret)); } else { for (int64_t i = 0; (i < tenant_ids.count()) && OB_SUCC(ret); ++i) { - obrpc::ObSimpleFreezeInfo info(tenant_ids[i]); - if(OB_FAIL(freeze_info_array.push_back(info))) { - LOG_WARN("fail to push back", KR(ret), "tenant_id", tenant_ids[i]); + // only launch major freeze for tenant whose status is normal, and skip major freeze for + // tenant whose status is not normal. + const ObSimpleTenantSchema *tenant_schema = nullptr; + if (OB_FAIL(schema_guard.get_tenant_info(tenant_ids[i], tenant_schema))) { + LOG_WARN("fail to get simple tenant schema", KR(ret), "tenant_id", tenant_ids[i]); + } else if (OB_ISNULL(tenant_schema)) { + ret = OB_INNER_STAT_ERROR; + LOG_WARN("tenant schema is null", KR(ret), "tenant_id", tenant_ids[i]); + } else if (OB_UNLIKELY(!tenant_schema->is_normal())) { + LOG_WARN("tenant status is not normal, skip major freeze for this tenant", "tenant_id", + tenant_ids[i], "status", tenant_schema->get_status()); + } else { // tenant_schema->is_normal() + obrpc::ObSimpleFreezeInfo info(tenant_ids[i]); + if(OB_FAIL(freeze_info_array.push_back(info))) { + LOG_WARN("fail to push back", KR(ret), "tenant_id", tenant_ids[i]); + } } } }