[CP] Fix the issue where importing a single file causes IO resource isolation to fail

This commit is contained in:
obdev 2024-11-12 13:15:00 +00:00 committed by ob-robot
parent 516f6fef77
commit 2488634066
3 changed files with 17 additions and 9 deletions

View File

@ -2329,17 +2329,16 @@ int ObTenantIOManager::print_io_function_status()
int FUNC_NUM = static_cast<uint8_t>(share::ObFunctionType::MAX_FUNCTION_NUM);
int GROUP_MODE_NUM = static_cast<uint8_t>(ObIOGroupMode::MODECNT);
ObIOFuncUsageArr &func_usages = io_func_infos_.func_usages_;
double avg_size = 0;
double avg_iops = 0;
int64_t avg_bw = 0;
int64_t avg_prepare_delay = 0;
int64_t avg_schedule_delay = 0;
int64_t avg_submit_delay = 0;
int64_t avg_device_delay = 0;
int64_t avg_total_delay = 0;
for (int i = 0; OB_SUCC(ret) && i < FUNC_NUM; ++i) {
for (int j = 0; OB_SUCC(ret) && j < GROUP_MODE_NUM; ++j) {
avg_size = 0;
double avg_size = 0;
double avg_iops = 0;
int64_t avg_bw = 0;
int64_t avg_prepare_delay = 0;
int64_t avg_schedule_delay = 0;
int64_t avg_submit_delay = 0;
int64_t avg_device_delay = 0;
int64_t avg_total_delay = 0;
const char *mode_str = get_io_mode_string(static_cast<ObIOGroupMode>(j));
if (i >= func_usages.count()) {
ret = OB_INVALID_ARGUMENT;

View File

@ -604,6 +604,14 @@ int ObIOGroupUsage::calc(double &avg_size, double &avg_iops, int64_t &avg_bw,
int ret = OB_SUCCESS;
int64_t now = ObTimeUtility::fast_current_time();
int64_t last_ts = ATOMIC_LOAD(&last_ts_);
avg_size = 0;
avg_iops = 0;
avg_bw = 0;
avg_prepare_delay = 0;
avg_schedule_delay = 0;
avg_submit_delay = 0;
avg_device_delay = 0;
avg_total_delay = 0;
if (0 != last_ts && now - last_ts > 0 && ATOMIC_BCAS(&last_ts_, last_ts, 0)) {
int64_t size = 0;
int64_t io_count = 0;

View File

@ -1441,6 +1441,7 @@ int ObLoadDataDirectImpl::LargeFileLoadExecutor::get_next_task_handle(TaskHandle
int64_t current_line_count = 0;
const int64_t chunk_id = next_chunk_id_ ++;
expr_buffer_.reuse();
CONSUMER_GROUP_FUNC_GUARD(ObFunctionType::PRIO_IMPORT);
if (OB_UNLIKELY(chunk_id > ObTableLoadSequenceNo::MAX_CHUNK_ID)) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("size is overflow", KR(ret), K(chunk_id));