[CP] opt delete_server
This commit is contained in:
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user