From de4083aa5e6f6dcbbd6b5a8e2b82956911f7f74f Mon Sep 17 00:00:00 2001 From: zhjc1124 Date: Mon, 11 Mar 2024 08:50:46 +0000 Subject: [PATCH] [CP] fix index exceeds core of print_io_status --- src/observer/virtual_table/ob_all_virtual_io_status.cpp | 2 +- src/share/io/ob_io_manager.cpp | 2 +- src/share/io/ob_io_struct.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/observer/virtual_table/ob_all_virtual_io_status.cpp b/src/observer/virtual_table/ob_all_virtual_io_status.cpp index 2641f754f..f00f72235 100644 --- a/src/observer/virtual_table/ob_all_virtual_io_status.cpp +++ b/src/observer/virtual_table/ob_all_virtual_io_status.cpp @@ -357,7 +357,7 @@ int ObAllVirtualIOQuota::record_user_group(const uint64_t tenant_id, ObIOUsage & ObIOUsage::AvgItems avg_iops, avg_size, avg_rt; io_usage.calculate_io_usage(); io_usage.get_io_usage(avg_iops, avg_size, avg_rt); - for (int64_t i = 0; i < io_config.group_num_; ++i) { + for (int64_t i = 0; i < io_config.group_num_ && i < avg_size.count() && i < avg_iops.count() && i < avg_rt.count(); ++i) { if (io_config.group_configs_.at(i).deleted_ || io_config.group_configs_.at(i).cleared_) { continue; } diff --git a/src/share/io/ob_io_manager.cpp b/src/share/io/ob_io_manager.cpp index 00f277f37..ec19b51ea 100644 --- a/src/share/io/ob_io_manager.cpp +++ b/src/share/io/ob_io_manager.cpp @@ -1499,7 +1499,7 @@ void ObTenantIOManager::print_io_status() ObSysIOUsage::SysAvgItems sys_avg_iops, sys_avg_size, sys_avg_rt; io_usage_.get_io_usage(avg_iops, avg_size, avg_rt); io_backup_usage_.get_io_usage(sys_avg_iops, sys_avg_size, sys_avg_rt); - for (int64_t i = 1; i < io_usage_.get_io_usage_num(); ++i) { + for (int64_t i = 1; i < io_usage_.get_io_usage_num() && i < avg_size.count() && i < avg_iops.count() && i < avg_rt.count(); ++i) { if (io_config_.group_configs_.at(i-1).deleted_) { continue; } diff --git a/src/share/io/ob_io_struct.cpp b/src/share/io/ob_io_struct.cpp index 0c451f0f6..c019c322c 100644 --- a/src/share/io/ob_io_struct.cpp +++ b/src/share/io/ob_io_struct.cpp @@ -577,7 +577,7 @@ bool ObIOUsage::is_request_doing(const int64_t index) const int64_t ObIOUsage::get_io_usage_num() const { - return group_num_; + return ATOMIC_LOAD(&group_num_); } int64_t ObIOUsage::to_string(char* buf, const int64_t buf_len) const