From 2c860eae5799b3e016dd2729510ac2a6dfcd28a5 Mon Sep 17 00:00:00 2001 From: chinaxing Date: Fri, 24 Feb 2023 14:00:06 +0000 Subject: [PATCH] [master][tx-route][xa] fix sanity-check for xa-commit/rollback --- src/storage/tx/ob_tx_api.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/storage/tx/ob_tx_api.cpp b/src/storage/tx/ob_tx_api.cpp index ed7e2ead37..3c4269200e 100644 --- a/src/storage/tx/ob_tx_api.cpp +++ b/src/storage/tx/ob_tx_api.cpp @@ -38,11 +38,11 @@ // ::rollback to savepoint:: // 1. advance In-Transaction-Clock to establish operation relation of Rollback-After-Write // ------------------------------------------------------------------------------------------- -#define TXN_API_SANITY_CHECK_FOR_TXN_FREE_ROUTE \ +#define TXN_API_SANITY_CHECK_FOR_TXN_FREE_ROUTE(end_txn) \ do { \ bool inv = false; \ if (tx.is_xa_trans()) { \ - inv = tx.xa_start_addr_ != self_; \ + inv = end_txn ? tx.addr_ != self_ : tx.xa_start_addr_ != self_; \ } else { \ inv = tx.addr_ != self_; \ } \ @@ -270,7 +270,7 @@ int ObTransService::start_tx(ObTxDesc &tx, const ObTxParam &tx_param) int ObTransService::rollback_tx(ObTxDesc &tx) { - TXN_API_SANITY_CHECK_FOR_TXN_FREE_ROUTE + TXN_API_SANITY_CHECK_FOR_TXN_FREE_ROUTE(true) int ret = OB_SUCCESS; TX_STAT_ROLLBACK_INC ObSpinLockGuard guard(tx.lock_); @@ -405,7 +405,7 @@ int ObTransService::submit_commit_tx(ObTxDesc &tx, ObITxCallback &cb, const ObString *trace_info) { - TXN_API_SANITY_CHECK_FOR_TXN_FREE_ROUTE + TXN_API_SANITY_CHECK_FOR_TXN_FREE_ROUTE(true) int ret = OB_SUCCESS; tx.lock_.lock(); if (tx.commit_ts_ <= 0) {