[CP] build_version buffer_size

This commit is contained in:
linqiucen
2024-01-17 12:17:07 +00:00
committed by ob-robot
parent 5e140016ae
commit a35c9fad4f
6 changed files with 33 additions and 13 deletions

View File

@ -119,7 +119,7 @@ int ObHeartBeatProcess::init_lease_request(ObLeaseRequest &lease_request)
{
int ret = OB_SUCCESS;
common::ObArray<std::pair<uint64_t, uint64_t> > max_stored_versions;
lease_request.reset();
if (OB_UNLIKELY(!inited_)) {
ret = OB_NOT_INIT;
LOG_WARN("not init", KR(ret), K(inited_));
@ -135,13 +135,14 @@ int ObHeartBeatProcess::init_lease_request(ObLeaseRequest &lease_request)
LOG_WARN("fail to set lease request max stored key versions",
KR(ret), K(lease_request), K(max_stored_versions));
#endif
} else if (OB_FAIL(get_package_and_svn(lease_request.build_version_, sizeof(lease_request.build_version_)))) {
LOG_WARN("fail to get build_version", KR(ret));
} else {
lease_request.request_lease_time_ = 0; // this is not a valid member
lease_request.version_ = ObLeaseRequest::LEASE_VERSION;
lease_request.zone_ = gctx_.config_->zone.str();
lease_request.server_ = gctx_.self_addr();
lease_request.sql_port_ = gctx_.config_->mysql_port;
get_package_and_svn(lease_request.build_version_, sizeof(lease_request.build_version_));
OTC_MGR.get_lease_request(lease_request);
lease_request.start_service_time_ = gctx_.start_service_time_;
lease_request.ssl_key_expired_time_ = gctx_.ssl_key_expired_time_;

View File

@ -1536,14 +1536,15 @@ int ObService::check_server_for_adding_server(
KR(ret), K(arg), K(sys_tenant_data_version), K(arg.get_sys_tenant_data_version()));
} else {
bool server_empty = false;
char build_version[common::OB_SERVER_VERSION_LENGTH] = {'\0'};
if (OB_FAIL(check_server_empty(server_empty))) {
LOG_WARN("check_server_empty failed", KR(ret));
} else if (OB_FAIL(get_package_and_svn(build_version, sizeof(build_version)))) {
LOG_WARN("fail to get build_version", KR(ret));
} else {
char build_version[common::OB_SERVER_VERSION_LENGTH] = {0};
ObServerInfoInTable::ObBuildVersion build_version_string;
ObZone zone;
int64_t sql_port = GCONF.mysql_port;
get_package_and_svn(build_version, sizeof(build_version));
if (OB_SUCC(ret) && server_empty) {
uint64_t server_id = arg.get_server_id();
@ -1641,8 +1642,9 @@ int ObService::get_build_version(share::ObServerInfoInTable::ObBuildVersion &bui
int ret = OB_SUCCESS;
char build_version_char_array[common::OB_SERVER_VERSION_LENGTH] = {0};
build_version.reset();
get_package_and_svn(build_version_char_array, sizeof(build_version));
if (OB_FAIL(build_version.assign(build_version_char_array))) {
if (OB_FAIL(get_package_and_svn(build_version_char_array, sizeof(build_version_char_array)))) {
LOG_WARN("fail to get build_version", KR(ret));
} else if (OB_FAIL(build_version.assign(build_version_char_array))) {
LOG_WARN("fail to assign build_version", KR(ret), K(build_version_char_array));
}
return ret;

View File

@ -163,17 +163,21 @@ int ObServerInfoInTable::build_server_status(share::ObServerStatus &server_statu
int ret = OB_SUCCESS;
const int64_t now = ::oceanbase::common::ObTimeUtility::current_time();
server_status.reset();
int64_t build_version_len = build_version_.size();
if (OB_UNLIKELY(!is_valid())) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid server info", KR(ret), KPC(this));
} else if (OB_FAIL(server_status.zone_.assign(zone_))) {
LOG_WARN("fail to assign zone", KR(ret), K(zone_));
} else if (build_version_len >= OB_SERVER_VERSION_LENGTH) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("build_version is too long", KR(ret), K(build_version_len));
} else {
server_status.server_ = server_;
server_status.id_ = server_id_;
server_status.sql_port_ = sql_port_;
server_status.with_rootserver_ = with_rootserver_;
strncpy(server_status.build_version_, build_version_.ptr(), OB_SERVER_VERSION_LENGTH);
strncpy(server_status.build_version_, build_version_.ptr(), build_version_len);
server_status.stop_time_ = stop_time_;
server_status.start_service_time_ = start_service_time_;
server_status.last_offline_time_ = last_offline_time_;
@ -993,6 +997,7 @@ int ObServerTableOperator::insert_dml_builder(
char svr_ip[OB_MAX_SERVER_ADDR_SIZE] = "";
const char *display_status_str = NULL;
dml.reset();
int64_t build_version_len = strlen(server_status.build_version_);
if (OB_UNLIKELY(!server_status.is_valid()
|| !server_status.server_.ip_to_string(svr_ip, sizeof(svr_ip)))) {
ret = OB_INVALID_ARGUMENT;
@ -1004,6 +1009,9 @@ int ObServerTableOperator::insert_dml_builder(
} else if (OB_ISNULL(display_status_str)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("null display status string", KR(ret), KP(display_status_str));
} else if (OB_UNLIKELY(build_version_len >= OB_SERVER_VERSION_LENGTH)) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("build_version is too long", KR(ret), K(build_version_len));
} else {
if (OB_FAIL(dml.add_pk_column(K(svr_ip)))
|| OB_FAIL(dml.add_pk_column("svr_port", server_status.server_.get_port()))

View File

@ -6,17 +6,25 @@
#include <stdio.h>
#include "share/ob_version.h"
#include "lib/utility/ob_macro_utils.h"
#include "lib/utility/ob_print_utils.h"
#include "lib/oblog/ob_log_module.h"
namespace oceanbase
{
namespace share
{
void get_package_and_svn(char *server_version, int64_t buf_len)
int get_package_and_svn(char *server_version, int64_t buf_len)
{
int ret = OB_SUCCESS;
const char *server_version_template = "%s_%s(%s %s)";
(void) snprintf(server_version, buf_len, server_version_template, PACKAGE_VERSION,
build_version(), build_date(), build_time());
int64_t pos = 0;
if (OB_FAIL(databuff_printf(server_version, buf_len, pos, server_version_template, PACKAGE_VERSION,
build_version(), build_date(), build_time()))) {
SHARE_LOG(WARN, "fail to build server version", K(ret), K(buf_len), K(pos), K(PACKAGE_VERSION),
K(build_version()), K(build_date()), K(build_time()));
}
return ret;
}
}

View File

@ -32,7 +32,7 @@ namespace oceanbase
{
namespace share
{
void get_package_and_svn(char *server_version, int64_t buf_len);
int get_package_and_svn(char *server_version, int64_t buf_len);
}
}

View File

@ -871,8 +871,9 @@ int ObOptimizerTraceImpl::trace_env()
int ret = OB_SUCCESS;
char buf[1024+1] = {0};
int64_t buf_len = 1024;
get_package_and_svn(buf, buf_len);
if (OB_FAIL(new_line())) {
if (OB_FAIL(get_package_and_svn(buf, buf_len))) {
LOG_WARN("fail to get build_version", KR(ret));
} else if (OB_FAIL(new_line())) {
LOG_WARN("failed to append msg", K(ret));
} else if (OB_FAIL(append_key_value("Version", ObString(strlen(buf), buf)))) {
LOG_WARN("failed to append msg", K(ret));