[master] fix write_auth check order

This commit is contained in:
chinaxing
2023-02-17 09:42:27 +00:00
committed by ob-robot
parent 897c5ae533
commit d4d748b94a

View File

@ -247,6 +247,10 @@ int ObMemtableCtx::write_auth(const bool exclusive)
ret = OB_ERR_READ_ONLY_TRANSACTION; ret = OB_ERR_READ_ONLY_TRANSACTION;
TRANS_LOG(ERROR, "WriteAuth: readonly trans not support update operation", TRANS_LOG(ERROR, "WriteAuth: readonly trans not support update operation",
"trans_id", ctx_->get_trans_id(), "ls_id", ctx_->get_ls_id(), K(ret)); "trans_id", ctx_->get_trans_id(), "ls_id", ctx_->get_ls_id(), K(ret));
} else if (!ATOMIC_LOAD(&is_master_)) {
ret = OB_NOT_MASTER;
TRANS_LOG(WARN, "WriteAuth: trans is already not master",
"trans_id", ctx_->get_trans_id(), "ls_id", ctx_->get_ls_id(), K(ret));
} else if (OB_SUCCESS != ATOMIC_LOAD(&end_code_)) { } else if (OB_SUCCESS != ATOMIC_LOAD(&end_code_)) {
ret = ATOMIC_LOAD(&end_code_); ret = ATOMIC_LOAD(&end_code_);
TRANS_LOG(WARN, "WriteAuth: trans is already end", K(ret), TRANS_LOG(WARN, "WriteAuth: trans is already end", K(ret),
@ -257,10 +261,6 @@ int ObMemtableCtx::write_auth(const bool exclusive)
ret = OB_TRANS_KILLED; ret = OB_TRANS_KILLED;
TRANS_LOG(WARN, "WriteAuth: trans is already end", K(ret), TRANS_LOG(WARN, "WriteAuth: trans is already end", K(ret),
"trans_id", ctx_->get_trans_id(), "ls_id", ctx_->get_ls_id(), K_(end_code)); "trans_id", ctx_->get_trans_id(), "ls_id", ctx_->get_ls_id(), K_(end_code));
} else if (!ATOMIC_LOAD(&is_master_)) {
ret = OB_NOT_MASTER;
TRANS_LOG(WARN, "WriteAuth: trans is already not master",
"trans_id", ctx_->get_trans_id(), "ls_id", ctx_->get_ls_id(), K(ret));
} else if (lock_succ) { } else if (lock_succ) {
// all check passed after lock succ // all check passed after lock succ
break; break;