set prev_log_type in commit/prepare log

Co-authored-by: wxhwang <wxhwang@126.com>
This commit is contained in:
obdev
2024-02-10 06:11:13 +00:00
committed by ob-robot
parent 8cefe11ef3
commit eebd59b11b
14 changed files with 238 additions and 55 deletions

View File

@ -300,7 +300,8 @@ void ObTxLogGenerator::gen_prepare_log()
{
share::ObLSArray inc_ls_arr;
transaction::LogOffSet prev_lsn = last_lsn_();
ObTxPrepareLog prepare_log(inc_ls_arr, prev_lsn);
ObTxPrevLogType prev_log_type(ObTxPrevLogType::TypeEnum::COMMIT_INFO);
ObTxPrepareLog prepare_log(inc_ls_arr, prev_lsn, prev_log_type);
LOG_DEBUG("gen prepare_log", K(prepare_log));
EXPECT_EQ(OB_SUCCESS, block_builder_.fill_tx_log_except_redo(prepare_log));
trans_type_ = transaction::TransType::DIST_TRANS; // dist trans.
@ -323,6 +324,7 @@ void ObTxLogGenerator::gen_commit_log()
EXPECT_EQ(OB_SUCCESS, ls_info_arr.push_back(ls_info2));
}
ObArray<uint8_t> checksum_signature;
ObTxPrevLogType prev_log_type(ObTxPrevLogType::TypeEnum::PREPARE);
ObTxCommitLog commit_log(
commit_version,
checksum,
@ -331,7 +333,8 @@ void ObTxLogGenerator::gen_commit_log()
mds_arr,
trans_type_,
last_lsn_(),
ls_info_arr);
ls_info_arr,
prev_log_type);
LOG_DEBUG("gen commit_log", K(commit_log));
EXPECT_EQ(OB_SUCCESS, block_builder_.fill_tx_log_except_redo(commit_log));
}

View File

@ -62,6 +62,7 @@ ObTxSEQ TEST_MAX_SUBMITTED_SEQ_NO = ObTxSEQ(12345, 0);
ObTxSEQ TEST_SERIAL_FINAL_SEQ_NO = ObTxSEQ(12346, 0);
LSKey TEST_LS_KEY;
ObXATransID TEST_XID;
ObTxPrevLogType TEST_PREV_LOG_TYPE(ObTxPrevLogType::TypeEnum::TRANSFER_IN);
struct OldTestLog
@ -215,7 +216,7 @@ TEST_F(TestObTxLog, tx_log_body_except_redo)
TEST_CLUSTER_VERSION,
TEST_XID,
TEST_SERIAL_FINAL_SEQ_NO);
ObTxPrepareLog filll_prepare(TEST_LS_ARRAY, TEST_LOG_OFFSET);
ObTxPrepareLog filll_prepare(TEST_LS_ARRAY, TEST_LOG_OFFSET, TEST_PREV_LOG_TYPE);
ObTxCommitLog fill_commit(share::SCN::base_scn(),
TEST_CHECKSUM,
TEST_CHECKSUM_SIGNATURE_ARRAY,
@ -223,7 +224,8 @@ TEST_F(TestObTxLog, tx_log_body_except_redo)
TEST_TX_BUFFER_NODE_ARRAY,
TEST_TRANS_TYPE,
TEST_LOG_OFFSET,
TEST_INFO_ARRAY);
TEST_INFO_ARRAY,
TEST_PREV_LOG_TYPE);
ObTxClearLog fill_clear(TEST_LS_ARRAY);
ObTxAbortLog fill_abort(TEST_TX_BUFFER_NODE_ARRAY);
ObTxRecordLog fill_record(TEST_LOG_OFFSET, TEST_LOG_OFFSET_ARRY);
@ -282,12 +284,14 @@ TEST_F(TestObTxLog, tx_log_body_except_redo)
ASSERT_EQ(OB_SUCCESS, replay_block.get_next_log(tx_log_header));
EXPECT_EQ(ObTxLogType::TX_PREPARE_LOG, tx_log_header.get_tx_log_type());
ASSERT_EQ(OB_SUCCESS, replay_block.deserialize_log_body(replay_prepare));
EXPECT_EQ(TEST_PREV_LOG_TYPE.prev_log_type_, replay_prepare.get_prev_log_type().prev_log_type_);
ObTxCommitLogTempRef commit_temp_ref;
ObTxCommitLog replay_commit(commit_temp_ref);
ASSERT_EQ(OB_SUCCESS, replay_block.get_next_log(tx_log_header));
EXPECT_EQ(ObTxLogType::TX_COMMIT_LOG, tx_log_header.get_tx_log_type());
ASSERT_EQ(OB_SUCCESS, replay_block.deserialize_log_body(replay_commit));
EXPECT_EQ(TEST_PREV_LOG_TYPE.prev_log_type_, replay_commit.get_prev_log_type().prev_log_type_);
ObTxClearLogTempRef clear_temp_ref;
ObTxClearLog replay_clear(clear_temp_ref);
@ -347,7 +351,8 @@ TEST_F(TestObTxLog, tx_log_body_redo)
TEST_TX_BUFFER_NODE_ARRAY,
TEST_TRANS_TYPE,
TEST_LOG_OFFSET,
TEST_INFO_ARRAY);
TEST_INFO_ARRAY,
TEST_PREV_LOG_TYPE);
ObTxLogBlockHeader &fill_block_header = fill_block.get_header();
fill_block_header.init(TEST_ORG_CLUSTER_ID, TEST_CLUSTER_VERSION, TEST_LOG_ENTRY_NO, ObTransID(TEST_TX_ID), TEST_ADDR);
@ -645,6 +650,8 @@ TEST_F(TestObTxLog, test_default_log_deserialize)
replay_member_cnt++;
EXPECT_EQ(fill_prepare.get_prev_lsn(), replay_prepare.get_prev_lsn());
replay_member_cnt++;
EXPECT_EQ(fill_prepare.get_prev_log_type().prev_log_type_, replay_prepare.get_prev_log_type().prev_log_type_);
replay_member_cnt++;
EXPECT_EQ(replay_member_cnt, fill_member_cnt);
ObTxCommitLogTempRef commit_temp_ref;
@ -870,7 +877,8 @@ TEST_F(TestObTxLog, test_commit_log_with_checksum_signature)
tx_buffer_node_array,
1,
LogOffSet(100),
ls_info_array);
ls_info_array,
TEST_PREV_LOG_TYPE);
int64_t size = log0.get_serialize_size();
char *buf = new char[size];
int64_t pos = 0;