fix the unprocessed state in xa rollback and rollback to sp concurrent scenarios

This commit is contained in:
obdev
2023-05-05 09:38:23 +00:00
committed by ob-robot
parent 23743b0e4d
commit 8dc830fb19
3 changed files with 3 additions and 0 deletions

View File

@ -513,6 +513,7 @@ int ObSqlTransControl::start_stmt(ObExecContext &exec_ctx)
OZ (txs->sql_stmt_start_hook(session->get_xid(), *session->get_tx_desc(), session->get_sessid(), get_real_session_id(*session)));
if (OB_SUCC(ret)) {
start_hook = true;
OX (session->get_tx_desc()->clear_interrupt());
}
}
if (OB_SUCC(ret)

View File

@ -128,6 +128,7 @@ enum ObTxAbortCause
PARTICIPANT_STATE_INCOMPLETE = 7,
PARTICIPANTS_SET_INCOMPLETE = 8,
END_STMT_FAIL = 9,
EXPLICIT_ROLLBACK = 10,
};
enum class ObTxClass { USER, SYS };

View File

@ -425,6 +425,7 @@ int ObTransService::end_1pc_trans(ObTxDesc &trans_desc,
ret = OB_INVALID_ARGUMENT;
TRANS_LOG(WARN, "invalid argument", K(ret), K(trans_desc));
} else if (is_rollback) {
interrupt(trans_desc, ObTxAbortCause::EXPLICIT_ROLLBACK);
if (OB_FAIL(rollback_tx(trans_desc))) {
TRANS_LOG(WARN, "rollback 1pc trans fail", KR(ret));
}