[fix](load) fix dead loop in _handle_mem_exceed_limit function when reduce memory for load (#21886)

This commit is contained in:
Xin Liao
2023-07-18 09:49:36 +08:00
committed by GitHub
parent b656f31cf2
commit 726e0d5ebf

View File

@ -371,11 +371,12 @@ void LoadChannelMgr::_handle_mem_exceed_limit() {
continue;
}
all_writers_mem.emplace_back(kv.second, item.first, std::move(item.second));
size_t pos = all_writers_mem.size() - 1;
tablets_mem_heap.emplace(std::get<2>(all_writers_mem[pos]).begin(),
std::get<2>(all_writers_mem[pos]).end(), pos);
}
}
for (size_t i = 0; i < all_writers_mem.size(); i++) {
tablets_mem_heap.emplace(std::get<2>(all_writers_mem[i]).begin(),
std::get<2>(all_writers_mem[i]).end(), i);
}
// reduce 1/10 memory every time
int64_t mem_to_flushed = _mem_tracker->consumption() / 10;