diff --git a/src/rootserver/ob_ls_service_helper.cpp b/src/rootserver/ob_ls_service_helper.cpp index 87e355ef77..add27cd8fd 100755 --- a/src/rootserver/ob_ls_service_helper.cpp +++ b/src/rootserver/ob_ls_service_helper.cpp @@ -969,12 +969,14 @@ int ObTenantLSInfo::gather_all_ls_info_() if (OB_ISNULL(sql_proxy_) || OB_ISNULL(tenant_schema_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("sql proxy or tenant schema is null", KR(ret), KP(tenant_schema_), KP(sql_proxy_)); - } else { - const uint64_t tenant_id = tenant_schema_->get_tenant_id(); + } else if (OB_ISNULL(trans_)) { if (OB_FAIL(status_operator_.get_all_ls_status_by_order( - tenant_id, status_info_array, *sql_proxy_))) { - LOG_WARN("failed to get all ls status by order", KR(ret), K(tenant_id)); + tenant_id_, status_info_array, *sql_proxy_))) { + LOG_WARN("failed to get all ls status by order", KR(ret), K(tenant_id_), KP(trans_)); } + } else if (OB_FAIL(status_operator_.get_all_ls_status_by_order( + tenant_id_, status_info_array, *trans_))) { + LOG_WARN("failed to get all ls status by order", KR(ret), K(tenant_id_), KP(trans_)); } if (OB_FAIL(ret)) { } else { diff --git a/src/rootserver/ob_ls_service_helper.h b/src/rootserver/ob_ls_service_helper.h index fbbb8fbb9f..3f41550228 100644 --- a/src/rootserver/ob_ls_service_helper.h +++ b/src/rootserver/ob_ls_service_helper.h @@ -130,7 +130,8 @@ class ObTenantLSInfo public: ObTenantLSInfo(ObMySQLProxy *sql_proxy, const share::schema::ObTenantSchema *tenant_schema, - const uint64_t tenant_id) + const uint64_t tenant_id, + common::ObMySQLTransaction *trans = NULL) : sql_proxy_(sql_proxy), tenant_schema_(tenant_schema), status_operator_(), @@ -138,7 +139,8 @@ public: unit_group_array_(), ls_group_array_(), primary_zone_(), - tenant_id_(tenant_id) {} + tenant_id_(tenant_id), + trans_(trans) {} virtual ~ObTenantLSInfo(){}; void reset(); @@ -193,6 +195,7 @@ private: ObLSGroupInfoArray ls_group_array_; ObArray primary_zone_; uint64_t tenant_id_; + ObMySQLTransaction *trans_; }; class ObLSServiceHelper diff --git a/src/rootserver/ob_recovery_ls_service.cpp b/src/rootserver/ob_recovery_ls_service.cpp index a5faea1c92..d02f7bfc6d 100755 --- a/src/rootserver/ob_recovery_ls_service.cpp +++ b/src/rootserver/ob_recovery_ls_service.cpp @@ -856,7 +856,7 @@ int ObRecoveryLSService::create_new_ls_(const share::ObLSAttr &ls_attr, ret = OB_TENANT_NOT_EXIST; LOG_WARN("tenant not exist", KR(ret), K(tenant_id_)); } else { - ObTenantLSInfo tenant_stat(GCTX.sql_proxy_, tenant_schema, tenant_id_); + ObTenantLSInfo tenant_stat(GCTX.sql_proxy_, tenant_schema, tenant_id_, &trans); ObLSFlag ls_flag = ls_attr.get_ls_flag(); if (OB_FAIL(ObLSServiceHelper::create_new_ls_in_trans(ls_attr.get_ls_id(), ls_attr.get_ls_group_id(), ls_attr.get_create_scn(),