[CP] [4_2_1] fix kill session not interrupt rollback savepoint

This commit is contained in:
chinaxing
2023-10-10 02:44:10 +00:00
committed by ob-robot
parent 2945f5bf28
commit a7f990a748

View File

@ -1583,15 +1583,20 @@ inline int ObTransService::rollback_savepoint_slowpath_(ObTxDesc &tx,
ret = sync_rollback_savepoint__(tx, msg, tx.brpc_mask_set_,
expire_ts, max_retry_intval, retries);
tx.lock_.lock();
tx.flags_.BLOCK_ = false;
// restore state
if (OB_SUCC(ret) && tx.is_tx_active()) {
tx.state_ = save_state;
}
// mask_set need clear
tx.brpc_mask_set_.reset();
// check interrupt
if (OB_SUCC(ret) && tx.flags_.INTERRUPTED_) {
ret = OB_ERR_INTERRUPTED;
TRANS_LOG(WARN, "rollback savepoint was interrupted", K(ret));
}
// clear interrupt flag
tx.clear_interrupt();
tx.flags_.BLOCK_ = false;
}
if (OB_NOT_NULL(tmp_tx_desc)) {
msg.tx_ptr_ = NULL;