[CP] opt delete_server

This commit is contained in:
obdev
2024-02-22 06:15:35 +00:00
committed by ob-robot
parent 13b179da55
commit 1f06e480f2
2 changed files with 18 additions and 0 deletions

View File

@ -24,6 +24,7 @@
#include "share/ls/ob_ls_table_iterator.h"//ObTenantLSTableIterator #include "share/ls/ob_ls_table_iterator.h"//ObTenantLSTableIterator
#include "share/ls/ob_ls_info.h"//ObLSInfo #include "share/ls/ob_ls_info.h"//ObLSInfo
#include "share/ob_all_server_tracer.h" #include "share/ob_all_server_tracer.h"
#include "share/ob_unit_table_operator.h"
#include "observer/ob_server_struct.h" #include "observer/ob_server_struct.h"
#include "rootserver/ob_root_service.h" #include "rootserver/ob_root_service.h"
namespace oceanbase namespace oceanbase
@ -267,10 +268,16 @@ int ObLostReplicaChecker::check_lost_replica_(const ObLSInfo &ls_info,
int ObLostReplicaChecker::check_lost_server_(const ObAddr &server, bool &is_lost_server) const int ObLostReplicaChecker::check_lost_server_(const ObAddr &server, bool &is_lost_server) const
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
share::ObUnitTableOperator ut_operator;
is_lost_server = false; is_lost_server = false;
if (!inited_) { if (!inited_) {
ret = OB_NOT_INIT; ret = OB_NOT_INIT;
LOG_WARN("not init", K(ret)); LOG_WARN("not init", K(ret));
} else if (OB_ISNULL(GCTX.sql_proxy_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("GCTX.sql_proxy_ is null", KR(ret), KP(GCTX.sql_proxy_));
} else if (OB_FAIL(ut_operator.init(*GCTX.sql_proxy_))) {
LOG_WARN("init unit table operator failed", K(ret));
} else if (!server.is_valid()) { } else if (!server.is_valid()) {
ret = OB_INVALID_ARGUMENT; ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid server", K(server), K(ret)); LOG_WARN("invalid server", K(server), K(ret));
@ -287,6 +294,16 @@ int ObLostReplicaChecker::check_lost_server_(const ObAddr &server, bool &is_lost
LOG_INFO("server not exist", K(server)); LOG_INFO("server not exist", K(server));
} else if (server_info.is_permanent_offline()) { } else if (server_info.is_permanent_offline()) {
is_lost_server = true; is_lost_server = true;
LOG_INFO("server is permanent offline", K(server));
} else if (server_info.is_deleting() && server_info.is_temporary_offline()) {
bool is_empty = false;
if (OB_FAIL(ut_operator.check_server_empty(server, is_empty))) {
// being empty means that the given server is not in both server list and migrate_from_server list
LOG_WARN("fail to check server empty", KR(ret), K(server));
} else if (is_empty) {
is_lost_server = true;
LOG_INFO("Deleting server is temporary offline and empty", K(server));
}
} }
} }
return ret; return ret;

View File

@ -169,6 +169,7 @@ int ObUnitTableOperator::check_server_empty(const common::ObAddr &server, bool &
LOG_WARN("fail to get units", KR(ret), K(server)); LOG_WARN("fail to get units", KR(ret), K(server));
} else if (units.count() > 0) { } else if (units.count() > 0) {
is_empty = false; is_empty = false;
LOG_DEBUG("server exists in the server list or migrate_from_server list", K(server), K(units));
} }
return ret; return ret;
} }