Fix the concurrency error that occurs when creating a group

This commit is contained in:
obdev 2024-11-21 20:18:41 +00:00 committed by ob-robot
parent 5361d527e5
commit b7e97b6631
2 changed files with 10 additions and 6 deletions

View File

@ -2474,9 +2474,13 @@ int ObMClockQueue::remove_from_heap(ObPhyQueue *phy_queue)
} else if (-1 == phy_queue->reservation_pos_
|| (-1 == phy_queue->limitation_pos_ && -1 == phy_queue->proportion_pos_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("invalid status", K(phy_queue->reservation_pos_),
K(phy_queue->limitation_pos_),
K(phy_queue->proportion_pos_));
LOG_WARN("phy_queue is not in heaps of reservation, proportion and limitation",
K(phy_queue),
K(*this),
K(ret),
K(phy_queue->reservation_pos_),
K(phy_queue->limitation_pos_),
K(phy_queue->proportion_pos_));
} else if (OB_FAIL(r_heap_.remove(phy_queue))) {
LOG_WARN("remove phy queue from r heap failed", K(ret));
} else if (FALSE_IT(phy_queue->reservation_pos_ = -1)) {

View File

@ -1341,12 +1341,12 @@ int ObIOSender::update_group_queue(const uint64_t tenant_id, const int64_t group
} else if (FALSE_IT(tmp_phyqueue = new (buf) ObPhyQueue())) {
} else if (OB_FAIL(tmp_phyqueue->init(i))) {
LOG_WARN("init io phy_queue failed", K(ret), K(i), K(*tmp_phyqueue));
} else if (OB_FAIL(io_group_queues->group_phy_queues_.push_back(tmp_phyqueue))) {
LOG_WARN("push back io sender failed", K(ret), K(i), K(*tmp_phyqueue));
} else if (OB_FAIL(enqueue_phy_queue(*tmp_phyqueue))) {
LOG_WARN("new queue into heap failed", K(ret));
} else if (OB_FAIL(io_group_queues->group_phy_queues_.push_back(tmp_phyqueue))) {
LOG_WARN("push back io sender failed", K(ret), K(i), K(*tmp_phyqueue));
} else {
LOG_INFO("add phy queue success", K(tenant_id), K(cur_num), K(group_num));
LOG_INFO("add phy queue success", K(tenant_id), K(i), K(tmp_phyqueue), K(cur_num), K(group_num));
}
if (OB_FAIL(ret) && nullptr != tmp_phyqueue) {
tmp_phyqueue->~ObPhyQueue();