diff --git a/src/storage/memtable/ob_memtable.cpp b/src/storage/memtable/ob_memtable.cpp index 3a4d28f78..54e4ad07f 100644 --- a/src/storage/memtable/ob_memtable.cpp +++ b/src/storage/memtable/ob_memtable.cpp @@ -725,7 +725,8 @@ int ObMemtable::check_row_locked_by_myself(const ObStoreCtx& ctx, const uint64_t } else if (lock_state.is_locked_ && lock_state.lock_trans_id_ == ctx.trans_id_) { is_locked = true; } - TRANS_LOG(DEBUG, "check_row_locked meet sstable", K(ret), K(rowkey), K(*sstable), K(is_locked)); + TRANS_LOG(DEBUG, "check_row_locked meet sstable", + K(ret), K(rowkey), K(*sstable), K(is_locked), K(lock_state)); } else { ret = OB_ERR_UNEXPECTED; TRANS_LOG(ERROR, "unknown store type", K(ret)); diff --git a/src/storage/transaction/ob_trans_part_ctx.cpp b/src/storage/transaction/ob_trans_part_ctx.cpp index db2ee3297..ac1bb617e 100644 --- a/src/storage/transaction/ob_trans_part_ctx.cpp +++ b/src/storage/transaction/ob_trans_part_ctx.cpp @@ -11201,7 +11201,7 @@ int ObPartTransCtx::check_sql_sequence_can_read(const int64_t sql_sequence, bool return ret; } -int ObPartTransCtx::check_row_locked_(const ObTransStatusInfo& trans_info, const ObTransID& read_trans_id, +int ObPartTransCtx::check_row_locked_(const ObTransStatusInfo& trans_info, const ObTransID& data_trans_id, const int64_t sql_sequence, ObStoreRowLockState& lock_state) { int ret = OB_SUCCESS; @@ -11213,13 +11213,8 @@ int ObPartTransCtx::check_row_locked_(const ObTransStatusInfo& trans_info, const break; } case ObTransTableStatusType::RUNNING: { - if (read_trans_id == data_trans_id) { - lock_state.is_locked_ = true; - lock_state.trans_version_ = 0; - } else { - lock_state.is_locked_ = !trans_info.undo_status_.is_contain(sql_sequence); - lock_state.trans_version_ = 0; - } + lock_state.is_locked_ = !trans_info.undo_status_.is_contain(sql_sequence); + lock_state.trans_version_ = 0; break; } case ObTransTableStatusType::ABORT: { @@ -11251,7 +11246,7 @@ int ObPartTransCtx::check_row_locked(const ObStoreRowkey& key, ObIMvccCtx& ctx, if (OB_FAIL(get_trans_state_and_version_without_lock(trans_info))) { TRANS_LOG(WARN, "failed to get trans table status", K(ret)); - } else if (OB_FAIL(check_row_locked_(trans_info, read_trans_id, data_trans_id, sql_sequence, lock_state))) { + } else if (OB_FAIL(check_row_locked_(trans_info, data_trans_id, sql_sequence, lock_state))) { TRANS_LOG(WARN, "failed to check transaction status", K(ret)); // locked by other } else if (lock_state.is_locked_ && lock_state.lock_trans_id_ != read_trans_id) { diff --git a/src/storage/transaction/ob_trans_part_ctx.h b/src/storage/transaction/ob_trans_part_ctx.h index 17269b61f..0266a8d27 100644 --- a/src/storage/transaction/ob_trans_part_ctx.h +++ b/src/storage/transaction/ob_trans_part_ctx.h @@ -598,7 +598,7 @@ private: int try_respond_coordinator_(const ObTransMsgType msg_type, const ListenerAction action); int get_prepare_ack_arg_(int& status, int64_t& state, int64_t& prepare_version, uint64_t& prepare_log_id, int64_t& prepare_log_ts, int64_t& request_id, int64_t& remain_wait_interval_us, bool& is_xa_prepare); - int check_row_locked_(const ObTransStatusInfo& trans_info, const ObTransID& read_trans_id, + int check_row_locked_(const ObTransStatusInfo& trans_info, const ObTransID& data_trans_id, const int64_t sql_sequence, storage::ObStoreRowLockState& lock_state); int lock_for_read_(const ObTransStatusInfo& trans_info, const ObLockForReadArg& lock_for_read_arg, bool& can_read, int64_t& trans_version, bool& is_determined_state);