[MDS] fix thread deadlock between DAG and tablet and mds_table

This commit is contained in:
fengdeyiji
2023-08-17 09:40:35 +00:00
committed by ob-robot
parent a5ef36f579
commit 9b01ed202d
27 changed files with 269 additions and 227 deletions

View File

@ -63,10 +63,10 @@ void MdsNodeStatus::advance(TwoPhaseCommitState new_stat)// ATOMIC
MdsNodeStatus old_node_status, new_node_status;
do {
old_node_status.union_.value_ = ATOMIC_LOAD(&union_.value_);
OB_ASSERT(new_stat >= old_node_status.union_.field_.state_ &&
MDS_ASSERT(new_stat >= old_node_status.union_.field_.state_ &&
new_stat < TwoPhaseCommitState::STATE_END &&
new_stat > TwoPhaseCommitState::STATE_INIT);
OB_ASSERT(STATE_CHECK_ALLOWED_MAP[(int)old_node_status.union_.field_.state_][(int)new_stat] == true);
MDS_ASSERT(STATE_CHECK_ALLOWED_MAP[(int)old_node_status.union_.field_.state_][(int)new_stat] == true);
new_node_status.union_.value_ = old_node_status.union_.value_;
new_node_status.union_.field_.state_ = new_stat;
} while (!ATOMIC_BCAS(&union_.value_, old_node_status.union_.value_, new_node_status.union_.value_));