From 29e0cb7475d8ccd3af775c1fc313361112429a5e Mon Sep 17 00:00:00 2001 From: chinaxing Date: Fri, 12 Aug 2022 17:12:57 +0800 Subject: [PATCH] [CP] [CP] [3_2_x] set trans-result incomplete when merge/assign failed --- src/sql/ob_sql_trans_util.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/sql/ob_sql_trans_util.cpp b/src/sql/ob_sql_trans_util.cpp index 22db8d74e..05bd4bbf6 100644 --- a/src/sql/ob_sql_trans_util.cpp +++ b/src/sql/ob_sql_trans_util.cpp @@ -37,6 +37,10 @@ int TransResult::assign(const TransResult& other) OZ(response_partitions_.assign(other.response_partitions_)); OX(is_incomplete_ = other.is_incomplete_); OX(max_sql_no_ = other.max_sql_no_); + if (OB_FAIL(ret)) { + TRANS_LOG(WARN, "assign failed, txn will be aborted", K(ret), KPC(this), K(other)); + set_incomplete(); + } return ret; } @@ -58,6 +62,10 @@ int TransResult::merge_result(const TransResult& other) if (OB_NOT_NULL(trans_desc_)) { OX(trans_desc_->set_max_sql_no(get_max_sql_no())); } + if (OB_FAIL(ret)) { + TRANS_LOG(WARN, "merge failed, txn will be aborted", K(ret), KPC(this), K(other)); + set_incomplete(); + } return ret; } @@ -66,6 +74,10 @@ int TransResult::merge_total_partitions(const ObPartitionArray& partitions) int ret = OB_SUCCESS; ObLockGuard lock_guard(lock_); OZ(append_array_no_dup(total_partitions_, partitions), partitions); + if (OB_FAIL(ret)) { + TRANS_LOG(WARN, "merge failed, txn will be aborted", K(ret), KPC(this), K(partitions)); + set_incomplete(); + } return ret; } @@ -74,6 +86,10 @@ int TransResult::merge_response_partitions(const common::ObPartitionArray& parti int ret = OB_SUCCESS; ObLockGuard lock_guard(lock_); OZ(append_array_no_dup(response_partitions_, partitions), partitions); + if (OB_FAIL(ret)) { + TRANS_LOG(WARN, "merge failed, txn will be aborted", K(ret), KPC(this), K(partitions)); + set_incomplete(); + } return ret; } @@ -82,6 +98,10 @@ int TransResult::merge_part_epoch_list(const transaction::ObPartitionEpochArray& int ret = OB_SUCCESS; ObLockGuard lock_guard(lock_); OZ(append_array_no_dup(part_epoch_list_, part_epoch_list), part_epoch_list); + if (OB_FAIL(ret)) { + TRANS_LOG(WARN, "merge failed, txn will be aborted", K(ret), KPC(this), K(part_epoch_list)); + set_incomplete(); + } return ret; }