From 8dc830fb1914edac0a4a47deb3492b61c026a29d Mon Sep 17 00:00:00 2001 From: obdev Date: Fri, 5 May 2023 09:38:23 +0000 Subject: [PATCH] fix the unprocessed state in xa rollback and rollback to sp concurrent scenarios --- src/sql/ob_sql_trans_control.cpp | 1 + src/storage/tx/ob_trans_define_v4.h | 1 + src/storage/tx/ob_trans_service.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/sql/ob_sql_trans_control.cpp b/src/sql/ob_sql_trans_control.cpp index 17a175a7fd..6019be9d6e 100644 --- a/src/sql/ob_sql_trans_control.cpp +++ b/src/sql/ob_sql_trans_control.cpp @@ -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) diff --git a/src/storage/tx/ob_trans_define_v4.h b/src/storage/tx/ob_trans_define_v4.h index 5fc27d6c05..c9c0392467 100644 --- a/src/storage/tx/ob_trans_define_v4.h +++ b/src/storage/tx/ob_trans_define_v4.h @@ -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 }; diff --git a/src/storage/tx/ob_trans_service.cpp b/src/storage/tx/ob_trans_service.cpp index 8210ede7b7..6c9673a0f6 100644 --- a/src/storage/tx/ob_trans_service.cpp +++ b/src/storage/tx/ob_trans_service.cpp @@ -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)); }