[CP] fast abort need check tx id not changed
This commit is contained in:
parent
3bb03130b1
commit
415cbc0dee
@ -1573,10 +1573,10 @@ ObTxSEQ ObTxDesc::inc_and_get_tx_seq(int16_t branch) const
|
||||
int64_t seq = ObSequence::inc_and_get_max_seq_no();
|
||||
return ObTxSEQ::mk_v0(seq);
|
||||
}
|
||||
void ObTxDesc::mark_part_abort(const int abort_cause)
|
||||
void ObTxDesc::mark_part_abort(const ObTransID tx_id, const int abort_cause)
|
||||
{
|
||||
ObSpinLockGuard guard(lock_);
|
||||
if (state_ < State::IN_TERMINATE && !flags_.PART_ABORTED_) {
|
||||
if (tx_id == tx_id_ && state_ < State::IN_TERMINATE && !flags_.PART_ABORTED_) {
|
||||
flags_.PART_ABORTED_ = true;
|
||||
abort_cause_ = abort_cause;
|
||||
}
|
||||
|
@ -713,7 +713,7 @@ LST_DO(DEF_FREE_ROUTE_DECODE, (;), static, dynamic, parts, extra);
|
||||
bool is_extra_changed() { return state_change_flags_.EXTRA_CHANGED_; };
|
||||
void set_explicit() { flags_.EXPLICIT_ = true; }
|
||||
void clear_interrupt() { flags_.INTERRUPTED_ = false; }
|
||||
void mark_part_abort(const int abort_cause);
|
||||
void mark_part_abort(const ObTransID tx_id, const int abort_cause);
|
||||
ObTxSEQ get_and_inc_tx_seq(int16_t branch, int N) const;
|
||||
ObTxSEQ inc_and_get_tx_seq(int16_t branch) const;
|
||||
ObTxSEQ get_tx_seq(int64_t seq_abs = 0) const;
|
||||
|
@ -898,11 +898,11 @@ int ObTransService::handle_trans_keepalive(const ObTxKeepaliveMsg &msg, ObTransR
|
||||
TRANS_LOG(WARN, "tx participant in failed status", K(msg));
|
||||
if (OB_TRANS_KILLED == msg.status_) {
|
||||
TRANS_LOG(INFO, "participant was killed, mark tx should abort", K(tx_id), K(msg.sender_));
|
||||
tx->mark_part_abort(OB_TRANS_KILLED);
|
||||
tx->mark_part_abort(tx_id, OB_TRANS_KILLED);
|
||||
ret_status = OB_TRANS_NEED_ROLLBACK;
|
||||
} else if (msg.status_ > 0) {
|
||||
TRANS_LOG(INFO, "participant failed, mark tx should abort", K(tx_id), K(msg.status_), K(msg.sender_));
|
||||
tx->mark_part_abort(msg.status_);
|
||||
tx->mark_part_abort(tx_id, msg.status_);
|
||||
ret_status = OB_TRANS_NEED_ROLLBACK;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user