From 117d360abfcae390c1da31306c2fe86f45b16e9f Mon Sep 17 00:00:00 2001 From: felix-w15 <806547150@qq.com> Date: Thu, 28 Dec 2023 07:13:13 +0000 Subject: [PATCH] stmt rollback empty parts should not set free route parts changed flag --- src/storage/tx/ob_trans_define_v4.h | 2 +- src/storage/tx/ob_tx_api.cpp | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/storage/tx/ob_trans_define_v4.h b/src/storage/tx/ob_trans_define_v4.h index f8e8a3b13b..6d8930fbee 100644 --- a/src/storage/tx/ob_trans_define_v4.h +++ b/src/storage/tx/ob_trans_define_v4.h @@ -785,7 +785,7 @@ LST_DO(DEF_FREE_ROUTE_DECODE, (;), static, dynamic, parts, extra); int64_t estimate_state_size(); bool is_static_changed() { return state_change_flags_.STATIC_CHANGED_; } bool is_dynamic_changed() { return state_ > State::IDLE && state_change_flags_.DYNAMIC_CHANGED_; } - bool is_parts_changed() { return state_change_flags_.PARTS_CHANGED_; }; + bool is_parts_changed() { return state_ > State::IDLE && state_change_flags_.PARTS_CHANGED_; }; bool is_extra_changed() { return state_change_flags_.EXTRA_CHANGED_; }; void set_explicit() { flags_.EXPLICIT_ = true; } void clear_interrupt() { flags_.INTERRUPTED_ = false; } diff --git a/src/storage/tx/ob_tx_api.cpp b/src/storage/tx/ob_tx_api.cpp index cc70532936..128453c49b 100644 --- a/src/storage/tx/ob_tx_api.cpp +++ b/src/storage/tx/ob_tx_api.cpp @@ -1389,7 +1389,6 @@ int ObTransService::rollback_to_explicit_savepoint(ObTxDesc &tx, } } } - tx.state_change_flags_.EXTRA_CHANGED_ = true; int64_t elapsed_us = ObTimeUtility::current_time() - start_ts; ObTransTraceLog &tlog = tx.get_tlog(); REC_TRANS_TRACE_EXT(&tlog, rollback_explicit_savepoint, OB_Y(ret), @@ -1434,7 +1433,6 @@ int ObTransService::release_explicit_savepoint(ObTxDesc &tx, const ObString &sav TRANS_LOG(TRACE, "release savepoint", K(savepoint), K(sp_id), K(session_id), K(tx)); } } - tx.state_change_flags_.EXTRA_CHANGED_ = true; ObTransTraceLog &tlog = tx.get_tlog(); REC_TRANS_TRACE_EXT(&tlog, release_explicit_savepoint, OB_Y(ret), OB_ID(savepoint), savepoint, @@ -1533,7 +1531,7 @@ int ObTransService::rollback_savepoint_(ObTxDesc &tx, if (OB_TIMEOUT == ret && ObTimeUtility::current_time() >= tx.get_expire_ts()) { ret = OB_TRANS_TIMEOUT; } - if (OB_SUCC(ret)) { + if (OB_SUCC(ret) && parts.count() > 0) { tx.post_rb_savepoint_(parts, savepoint); } return ret;