From 5f602ed6c40d456ff1276ce077e26f539ad9ed2f Mon Sep 17 00:00:00 2001 From: chinaxing Date: Tue, 4 Apr 2023 08:44:08 +0000 Subject: [PATCH] [4.1][tx-route] fix tx abort miss return part state --- src/observer/mysql/obmp_utils.cpp | 3 +++ src/storage/tx/ob_trans_service_v4.cpp | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/observer/mysql/obmp_utils.cpp b/src/observer/mysql/obmp_utils.cpp index 05f2a768f..214215756 100644 --- a/src/observer/mysql/obmp_utils.cpp +++ b/src/observer/mysql/obmp_utils.cpp @@ -164,6 +164,9 @@ int ObMPUtils::sync_session_info(sql::ObSQLSessionInfo &sess, const common::ObSt succ_info_types.add_member(info_type); LOG_DEBUG("sync-session-info", K(info_type), K(info_len)); } + if (OB_FAIL(ret)) { + sess.post_sync_session_info(); + } } return ret; diff --git a/src/storage/tx/ob_trans_service_v4.cpp b/src/storage/tx/ob_trans_service_v4.cpp index 2a5156e65..afe74a874 100644 --- a/src/storage/tx/ob_trans_service_v4.cpp +++ b/src/storage/tx/ob_trans_service_v4.cpp @@ -558,9 +558,9 @@ int ObTransService::abort_tx_(ObTxDesc &tx, const int cause, const bool cleanup) TRANS_LOG(WARN, "try abort tx which has decided", K(ret), K(tx), K(cause)); } else { - // TODO: refactor state switch and put this to there if (ObTxDesc::State::IDLE == tx.state_) { - tx.state_change_flags_.STATIC_CHANGED_ = 1; + // for tx free route, when switch from idle to abort, same as tx actived + tx.state_change_flags_.mark_all(); } tx.state_ = ObTxDesc::State::IN_TERMINATE; tx.abort_cause_ = cause;