[CP] fix core-dump due to missing lock
This commit is contained in:
parent
853e90a042
commit
07af09e351
@ -333,7 +333,7 @@ int ObServerBalancer::distribute_for_standalone_sys_unit()
|
||||
} else if (!enable_sys_unit_standalone) {
|
||||
ret = OB_STATE_NOT_MATCH;
|
||||
LOG_WARN("sys unit standalone deployment is disabled", K(ret));
|
||||
} else if (OB_FAIL(unit_mgr_->get_tenant_unit_servers(
|
||||
} else if (OB_FAIL(unit_mgr_->get_tenant_unit_servers_(
|
||||
OB_SYS_TENANT_ID, empty_zone, sys_unit_server_array))) {
|
||||
LOG_WARN("fail to get tenant unit server array", K(ret));
|
||||
} else {
|
||||
@ -1240,7 +1240,7 @@ int ObServerBalancer::generate_available_servers(
|
||||
LOG_WARN("zone is not in active", K(ret), K(zone_info));
|
||||
} else if (OB_FAIL(SVR_TRACER.get_servers_of_zone(zone, server_list))) {
|
||||
LOG_WARN("fail to get servers of zone", K(ret), K(zone));
|
||||
} else if (OB_FAIL(unit_mgr_->get_tenant_unit_servers(
|
||||
} else if (OB_FAIL(unit_mgr_->get_tenant_unit_servers_(
|
||||
OB_SYS_TENANT_ID, zone, sys_unit_server_array))) {
|
||||
LOG_WARN("fail to get tenant unit server array", K(ret));
|
||||
} else {
|
||||
|
@ -5426,6 +5426,19 @@ int ObUnitManager::get_tenant_unit_servers(
|
||||
const uint64_t tenant_id,
|
||||
const common::ObZone &zone,
|
||||
common::ObIArray<common::ObAddr> &server_array) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
SpinRLockGuard guard(lock_);
|
||||
if (OB_FAIL(get_tenant_unit_servers_(tenant_id, zone, server_array))) {
|
||||
LOG_WARN("fail to get_tenant_unit_servers_", KR(ret), K(tenant_id), K(zone));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObUnitManager::get_tenant_unit_servers_(
|
||||
const uint64_t tenant_id,
|
||||
const common::ObZone &zone,
|
||||
common::ObIArray<common::ObAddr> &server_array) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObArray<share::ObResourcePool *> *pools = nullptr;
|
||||
@ -5768,14 +5781,14 @@ int ObUnitManager::get_excluded_servers(const uint64_t resource_pool_id,
|
||||
}
|
||||
}
|
||||
// get all tenant resource pool related servers on target zone
|
||||
else if (OB_FAIL(get_tenant_unit_servers(tenant_id, zone, excluded_servers))) {
|
||||
else if (OB_FAIL(get_tenant_unit_servers_(tenant_id, zone, excluded_servers))) {
|
||||
LOG_WARN("get tennat unit server fail", KR(ret), K(tenant_id), K(zone));
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret) && GCONF.enable_sys_unit_standalone) {
|
||||
// When the system tenant is deployed independently,
|
||||
// the server where the unit of the system tenant is located is also required as the executed servers
|
||||
if (OB_FAIL(get_tenant_unit_servers(OB_SYS_TENANT_ID, zone, sys_standalone_servers))) {
|
||||
if (OB_FAIL(get_tenant_unit_servers_(OB_SYS_TENANT_ID, zone, sys_standalone_servers))) {
|
||||
LOG_WARN("fail to get tenant unit servers", KR(ret), K(zone));
|
||||
} else if (OB_FAIL(append(excluded_servers, sys_standalone_servers))) {
|
||||
LOG_WARN("fail to append other excluded servers", K(ret));
|
||||
|
@ -395,6 +395,10 @@ private:
|
||||
const bool is_manual = false);
|
||||
int get_zone_units(const common::ObArray<share::ObResourcePool *> &pools,
|
||||
common::ObArray<ZoneUnit> &zone_units) const;
|
||||
int get_tenant_unit_servers_(
|
||||
const uint64_t tenant_id,
|
||||
const common::ObZone &zone,
|
||||
common::ObIArray<common::ObAddr> &server_array) const;
|
||||
virtual int end_migrate_unit(const uint64_t unit_id, const EndMigrateOp end_migrate_op = COMMIT);
|
||||
int get_excluded_servers(
|
||||
const share::ObUnit &unit,
|
||||
|
Loading…
x
Reference in New Issue
Block a user