From c7d582e4d7debcdeaa313d044d0519a40187f80a Mon Sep 17 00:00:00 2001 From: LeonChaoHi <15201161716@163.com> Date: Wed, 3 Apr 2024 08:50:28 +0000 Subject: [PATCH] placeholder for network bandwidth --- src/objit/include/objit/common/ob_item_type.h | 2 + .../virtual_table/ob_all_virtual_unit.cpp | 8 ++++ .../virtual_table/ob_all_virtual_unit.h | 4 +- .../ob_inner_table_schema.101_150.cpp | 38 +++++++++++++++++++ .../ob_inner_table_schema.12251_12300.cpp | 30 +++++++++++++++ .../ob_inner_table_schema.15201_15250.cpp | 30 +++++++++++++++ .../inner_table/ob_inner_table_schema_def.py | 4 ++ src/share/unit/ob_unit_resource.cpp | 14 ++++++- src/share/unit/ob_unit_resource.h | 8 +++- .../mysql/desc_virtual_table_in_mysql.result | 2 + .../r/mysql/desc_virtual_table_in_sys.result | 2 + 11 files changed, 138 insertions(+), 4 deletions(-) diff --git a/src/objit/include/objit/common/ob_item_type.h b/src/objit/include/objit/common/ob_item_type.h index 5b61415d32..4433e54194 100755 --- a/src/objit/include/objit/common/ob_item_type.h +++ b/src/objit/include/objit/common/ob_item_type.h @@ -2459,6 +2459,8 @@ typedef enum ObItemType T_REPAIR_TABLE, T_CHECKSUM_TABLE, T_SERVICE_NAME, + T_MAX_NET_BANDWIDTH, + T_NET_BANDWIDTH_WEIGHT, T_MAX //Attention: add a new type before T_MAX } ObItemType; diff --git a/src/observer/virtual_table/ob_all_virtual_unit.cpp b/src/observer/virtual_table/ob_all_virtual_unit.cpp index 256cd45446..779986019a 100644 --- a/src/observer/virtual_table/ob_all_virtual_unit.cpp +++ b/src/observer/virtual_table/ob_all_virtual_unit.cpp @@ -276,6 +276,14 @@ int ObAllVirtualUnit::inner_get_next_row(ObNewRow *&row) case CREATE_TIME: cur_row_.cells_[i].set_int(tenant_meta.unit_.create_timestamp_); break; + case MAX_NET_BANDWIDTH: { + cur_row_.cells_[i].set_int(ObUnitResource::DEFAULT_NET_BANDWIDTH); // not used, keep default + break; + } + case NET_BANDWIDTH_WEIGHT: { + cur_row_.cells_[i].set_int(ObUnitResource::DEFAULT_NET_BANDWIDTH_WEIGHT); // not used, keep default + break; + } default: { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "invalid col_id", K(ret), K(col_id)); diff --git a/src/observer/virtual_table/ob_all_virtual_unit.h b/src/observer/virtual_table/ob_all_virtual_unit.h index a624d5a0ca..bdf8160dff 100644 --- a/src/observer/virtual_table/ob_all_virtual_unit.h +++ b/src/observer/virtual_table/ob_all_virtual_unit.h @@ -44,7 +44,9 @@ class ObAllVirtualUnit : public common::ObVirtualTableScannerIterator CREATE_TIME, ZONE_TYPE, REGION, - DATA_DISK_SIZE // not used, only as placeholder + DATA_DISK_SIZE, // not used, only as placeholder + MAX_NET_BANDWIDTH, // not used, only as placeholder + NET_BANDWIDTH_WEIGHT // not used, only as placeholder }; public: diff --git a/src/share/inner_table/ob_inner_table_schema.101_150.cpp b/src/share/inner_table/ob_inner_table_schema.101_150.cpp index 42af046803..577a30f0bf 100644 --- a/src/share/inner_table/ob_inner_table_schema.101_150.cpp +++ b/src/share/inner_table/ob_inner_table_schema.101_150.cpp @@ -9489,6 +9489,44 @@ int ObInnerTableSchema::all_unit_config_schema(ObTableSchema &table_schema) data_disk_size_default, data_disk_size_default); //default_value } + + if (OB_SUCC(ret)) { + ObObj max_net_bandwidth_default; + max_net_bandwidth_default.set_int(9223372036854775807); + ADD_COLUMN_SCHEMA_T("max_net_bandwidth", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false, //is_autoincrement + max_net_bandwidth_default, + max_net_bandwidth_default); //default_value + } + + if (OB_SUCC(ret)) { + ObObj net_bandwidth_weight_default; + net_bandwidth_weight_default.set_int(0); + ADD_COLUMN_SCHEMA_T("net_bandwidth_weight", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false, //is_autoincrement + net_bandwidth_weight_default, + net_bandwidth_weight_default); //default_value + } table_schema.set_index_using_type(USING_BTREE); table_schema.set_row_store_type(ENCODING_ROW_STORE); table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); diff --git a/src/share/inner_table/ob_inner_table_schema.12251_12300.cpp b/src/share/inner_table/ob_inner_table_schema.12251_12300.cpp index 4d13f59d24..85ebc4197a 100644 --- a/src/share/inner_table/ob_inner_table_schema.12251_12300.cpp +++ b/src/share/inner_table/ob_inner_table_schema.12251_12300.cpp @@ -5905,6 +5905,36 @@ int ObInnerTableSchema::all_virtual_unit_schema(ObTableSchema &table_schema) true, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("max_net_bandwidth", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("net_bandwidth_weight", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); diff --git a/src/share/inner_table/ob_inner_table_schema.15201_15250.cpp b/src/share/inner_table/ob_inner_table_schema.15201_15250.cpp index ef9e7dbadc..71fb0f4926 100644 --- a/src/share/inner_table/ob_inner_table_schema.15201_15250.cpp +++ b/src/share/inner_table/ob_inner_table_schema.15201_15250.cpp @@ -2671,6 +2671,36 @@ int ObInnerTableSchema::all_virtual_unit_ora_schema(ObTableSchema &table_schema) true, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("MAX_NET_BANDWIDTH", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("NET_BANDWIDTH_WEIGHT", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + true, //is_nullable + false); //is_autoincrement + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index 5833570499..9c6ad4029f 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -814,6 +814,8 @@ def_table_schema( ('min_iops', 'int'), ('iops_weight', 'int'), ('data_disk_size', 'int', 'false', '-1'), + ('max_net_bandwidth', 'int', 'false', '9223372036854775807'), # INT64_MAX + ('net_bandwidth_weight', 'int', 'false', '0'), ], ) @@ -11736,6 +11738,8 @@ def_table_schema( ('zone_type', 'varchar:MAX_ZONE_TYPE_LENGTH'), ('region', 'varchar:MAX_REGION_LENGTH'), ('data_disk_size', 'int', 'true'), + ('max_net_bandwidth', 'int', 'true'), + ('net_bandwidth_weight', 'int', 'true'), ], partition_columns = ['svr_ip', 'svr_port'], vtable_route_policy = 'distributed', diff --git a/src/share/unit/ob_unit_resource.cpp b/src/share/unit/ob_unit_resource.cpp index 475385f94a..4ecdfb4497 100644 --- a/src/share/unit/ob_unit_resource.cpp +++ b/src/share/unit/ob_unit_resource.cpp @@ -62,7 +62,9 @@ ObUnitResource::ObUnitResource( max_iops_(max_iops), min_iops_(min_iops), iops_weight_(iops_weight), - data_disk_size_(DEFAULT_DATA_DISK_SIZE) + data_disk_size_(DEFAULT_DATA_DISK_SIZE), + max_net_bandwidth_(DEFAULT_NET_BANDWIDTH), + net_bandwidth_weight_(DEFAULT_NET_BANDWIDTH_WEIGHT) { } @@ -76,6 +78,8 @@ void ObUnitResource::reset() min_iops_ = 0; iops_weight_ = INVALID_IOPS_WEIGHT; data_disk_size_ = DEFAULT_DATA_DISK_SIZE; + max_net_bandwidth_ = DEFAULT_NET_BANDWIDTH; + net_bandwidth_weight_ = DEFAULT_NET_BANDWIDTH_WEIGHT; } void ObUnitResource::set( @@ -95,6 +99,8 @@ void ObUnitResource::set( min_iops_ = min_iops; iops_weight_ = iops_weight; data_disk_size_ = DEFAULT_DATA_DISK_SIZE; + max_net_bandwidth_ = DEFAULT_NET_BANDWIDTH; + net_bandwidth_weight_ = DEFAULT_NET_BANDWIDTH_WEIGHT; } int ObUnitResource::init_and_check_cpu_(const ObUnitResource &user_spec) @@ -512,6 +518,8 @@ ObUnitResource &ObUnitResource::operator=(const ObUnitResource &other) min_iops_ = other.min_iops_; iops_weight_ = other.iops_weight_; data_disk_size_ = DEFAULT_DATA_DISK_SIZE; + max_net_bandwidth_ = DEFAULT_NET_BANDWIDTH; + net_bandwidth_weight_ = DEFAULT_NET_BANDWIDTH_WEIGHT; } return *this; } @@ -591,7 +599,9 @@ OB_SERIALIZE_MEMBER(ObUnitResource, max_iops_, min_iops_, iops_weight_, - data_disk_size_); + data_disk_size_, + max_net_bandwidth_, + net_bandwidth_weight_); bool ObUnitResource::has_expanded_resource_than(const ObUnitResource &other) const diff --git a/src/share/unit/ob_unit_resource.h b/src/share/unit/ob_unit_resource.h index 11ca7a0959..6baa3a178e 100644 --- a/src/share/unit/ob_unit_resource.h +++ b/src/share/unit/ob_unit_resource.h @@ -100,6 +100,10 @@ public: // MIN_CPU * FACTOR = IOPS static constexpr double CPU_TO_IOPS_FACTOR = 10000; + ////////////////////// NET_BANDWIDTH ////////////////////////// + static const int64_t DEFAULT_NET_BANDWIDTH = INT64_MAX; + static const int64_t DEFAULT_NET_BANDWIDTH_WEIGHT = 0; + public: ObUnitResource() { reset(); } ObUnitResource(const ObUnitResource &r) { *this = r; } @@ -386,7 +390,9 @@ protected: int64_t max_iops_; int64_t min_iops_; int64_t iops_weight_; - int64_t data_disk_size_; // not used, only as placeholder + int64_t data_disk_size_; // not used, only as placeholder + int64_t max_net_bandwidth_; // not used, only as placeholder + int64_t net_bandwidth_weight_; // not used, only as placeholder }; diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result index 3b7f6a065b..a520adf91b 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result @@ -2581,6 +2581,8 @@ create_time bigint(20) NO NULL zone_type varchar(128) NO NULL region varchar(128) NO NULL data_disk_size bigint(20) YES NULL +max_net_bandwidth bigint(20) YES NULL +net_bandwidth_weight bigint(20) YES NULL select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_unit; IF(count(*) >= 0, 1, 0) 1 diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result index aaf8b8acc7..ca9171858e 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result @@ -6161,6 +6161,8 @@ create_time bigint(20) NO NULL zone_type varchar(128) NO NULL region varchar(128) NO NULL data_disk_size bigint(20) YES NULL +max_net_bandwidth bigint(20) YES NULL +net_bandwidth_weight bigint(20) YES NULL select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_unit; IF(count(*) >= 0, 1, 0) 1