fix px target monitor core because of concurrent access of set

This commit is contained in:
obdev
2023-04-26 14:58:56 +00:00
committed by ob-robot
parent 7148f2bce1
commit aa50359fed

View File

@ -300,12 +300,18 @@ int ObPxTargetMgr::get_version(uint64_t tenant_id, uint64_t &version)
int ObPxTargetMgr::update_peer_target_used(uint64_t tenant_id, const ObAddr &server, int64_t peer_used) int ObPxTargetMgr::update_peer_target_used(uint64_t tenant_id, const ObAddr &server, int64_t peer_used)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
// return OB_HASH_EXIST instead of replacing the element.
int flag = 0;
GET_TARGET_MONITOR(tenant_id, { GET_TARGET_MONITOR(tenant_id, {
if (OB_FAIL(target_monitor->update_peer_target_used(server, peer_used))) { if (OB_FAIL(target_monitor->update_peer_target_used(server, peer_used))) {
LOG_WARN("update peer target_used failed", K(ret), K(tenant_id), K(peer_used)); LOG_WARN("update peer target_used failed", K(ret), K(tenant_id), K(peer_used));
} else if (server_ != server && OB_FAIL(alive_server_set_.set_refactored(server, 1))) { } else if (server_ != server && OB_FAIL(alive_server_set_.set_refactored(server, flag))) {
if (OB_HASH_EXIST == ret) {
ret = OB_SUCCESS;
} else {
LOG_WARN("alive_server_set_ push_back failed", K(ret), K(server)); LOG_WARN("alive_server_set_ push_back failed", K(ret), K(server));
} }
}
}); });
return ret; return ret;
} }