patch 4.0
This commit is contained in:
@ -17,38 +17,33 @@
|
||||
#include "rootserver/ob_server_manager.h"
|
||||
#include "lib/container/ob_array_iterator.h"
|
||||
|
||||
namespace oceanbase {
|
||||
namespace rootserver {
|
||||
class ObServerStatusBuilder {
|
||||
namespace oceanbase
|
||||
{
|
||||
namespace rootserver
|
||||
{
|
||||
class ObServerStatusBuilder
|
||||
{
|
||||
public:
|
||||
ObServerStatusBuilder() : config_(NULL), server_statuses_(), server_id_(OB_INIT_SERVER_ID)
|
||||
{}
|
||||
int init(ObServerConfig& config)
|
||||
{
|
||||
config_ = &config;
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
ObServerStatusBuilder() : config_(NULL), server_statuses_(), server_id_(OB_INIT_SERVER_ID) {}
|
||||
int init(ObServerConfig &config) { config_ = &config; return OB_SUCCESS; }
|
||||
void set_resource_info(const double cpu, const int64_t mem, const int64_t disk);
|
||||
ObServerStatusBuilder& add(
|
||||
share::ObServerStatus::DisplayStatus status, const int64_t now, const ObAddr& server, const ObZone& zone);
|
||||
ObServerManager::ObServerStatusArray& get_server_statuses()
|
||||
{
|
||||
return server_statuses_;
|
||||
}
|
||||
void reset()
|
||||
{
|
||||
server_statuses_.reset();
|
||||
}
|
||||
int build(ObServerManager& server_mgr);
|
||||
|
||||
ObServerStatusBuilder &add(share::ObServerStatus::DisplayStatus status,
|
||||
const int64_t now,
|
||||
const ObAddr &server,
|
||||
const ObZone &zone);
|
||||
ObServerManager::ObServerStatusArray &get_server_statuses() { return server_statuses_; }
|
||||
void reset() { server_statuses_.reset(); }
|
||||
int build(ObServerManager &server_mgr);
|
||||
private:
|
||||
ObServerConfig* config_;
|
||||
ObServerConfig *config_;
|
||||
share::ObServerResourceInfo resource_;
|
||||
ObServerManager::ObServerStatusArray server_statuses_;
|
||||
uint64_t server_id_;
|
||||
};
|
||||
|
||||
void ObServerStatusBuilder::set_resource_info(const double cpu, const int64_t mem, const int64_t disk)
|
||||
void ObServerStatusBuilder::set_resource_info(const double cpu,
|
||||
const int64_t mem,
|
||||
const int64_t disk)
|
||||
{
|
||||
resource_.cpu_ = cpu;
|
||||
resource_.mem_in_use_ = 0;
|
||||
@ -57,8 +52,10 @@ void ObServerStatusBuilder::set_resource_info(const double cpu, const int64_t me
|
||||
resource_.disk_total_ = disk;
|
||||
}
|
||||
|
||||
ObServerStatusBuilder& ObServerStatusBuilder::add(
|
||||
share::ObServerStatus::DisplayStatus status, const int64_t now, const ObAddr& server, const ObZone& zone)
|
||||
ObServerStatusBuilder &ObServerStatusBuilder::add(share::ObServerStatus::DisplayStatus status,
|
||||
const int64_t now,
|
||||
const ObAddr &server,
|
||||
const ObZone &zone)
|
||||
{
|
||||
share::ObServerStatus server_status;
|
||||
if (share::ObServerStatus::OB_SERVER_INACTIVE == status) {
|
||||
@ -75,7 +72,8 @@ ObServerStatusBuilder& ObServerStatusBuilder::add(
|
||||
server_status.admin_status_ = share::ObServerStatus::OB_SERVER_ADMIN_DELETING;
|
||||
server_status.hb_status_ = share::ObServerStatus::OB_HEARTBEAT_LEASE_EXPIRED;
|
||||
}
|
||||
OB_ASSERT(strlen("dev1.0") == snprintf(server_status.build_version_, OB_SERVER_VERSION_LENGTH, "%s", "dev1.0"));
|
||||
OB_ASSERT(strlen("dev1.0") == snprintf(server_status.build_version_, OB_SERVER_VERSION_LENGTH,
|
||||
"%s", "dev1.0"));
|
||||
server_status.zone_ = zone;
|
||||
server_status.server_ = server;
|
||||
server_status.resource_info_ = resource_;
|
||||
@ -86,13 +84,12 @@ ObServerStatusBuilder& ObServerStatusBuilder::add(
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline int ObServerStatusBuilder::build(ObServerManager& server_mgr)
|
||||
inline int ObServerStatusBuilder::build(ObServerManager &server_mgr)
|
||||
{
|
||||
int ret = server_mgr.load_server_statuses(server_statuses_);
|
||||
// build_server_status will change alive status to lease expired
|
||||
if (OB_SUCC(ret)) {
|
||||
FOREACH_X(s, server_statuses_, OB_SUCCESS == ret)
|
||||
{
|
||||
FOREACH_X(s, server_statuses_, OB_SUCCESS == ret) {
|
||||
if (!s->is_alive()) {
|
||||
continue;
|
||||
}
|
||||
@ -100,12 +97,13 @@ inline int ObServerStatusBuilder::build(ObServerManager& server_mgr)
|
||||
if (OB_FAIL(server_mgr.get_server_status(s->server_, ss))) {
|
||||
} else {
|
||||
ss.hb_status_ = share::ObServerStatus::OB_HEARTBEAT_ALIVE;
|
||||
if (OB_FAIL(server_mgr.update_server_status(ss))) {}
|
||||
if (OB_FAIL(server_mgr.update_server_status(ss))) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
} // end namespace rootserver
|
||||
} // end namespace oceanbase
|
||||
}//end namespace rootserver
|
||||
}//end namespace oceanbase
|
||||
|
Reference in New Issue
Block a user