[scn] scn for memtable
This commit is contained in:
@ -328,7 +328,9 @@ TEST_F(TestMemtable, mt_set)
|
||||
print(mvcc_row);
|
||||
EXPECT_EQ(2, rg.mem_ctx_.trans_mgr_.get_main_list_length());
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, 1000, 1000, 0));
|
||||
palf::SCN val_1000;
|
||||
val_1000.convert_for_lsn_allocator(1000);
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, val_1000, val_1000, 0));
|
||||
print(mvcc_row);
|
||||
}
|
||||
|
||||
@ -347,13 +349,17 @@ TEST_F(TestMemtable, conflict)
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.init(2, this));
|
||||
EXPECT_EQ(OB_ERR_EXCLUSIVE_LOCK_CONFLICT, rg2.write(1, 3, mt));
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, 1000, 1000, 0));
|
||||
palf::SCN val_1000;
|
||||
val_1000.convert_for_lsn_allocator(1000);
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, val_1000, val_1000, 0));
|
||||
|
||||
EXPECT_EQ(OB_TRANSACTION_SET_VIOLATION, rg2.write(1, 3, mt, 900));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.write(1, 3, mt, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.write(1, 4, mt, 1001));
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.mem_ctx_.do_trans_end(true, 1002, 1002, 0));
|
||||
palf::SCN val_1002;
|
||||
val_1002.convert_for_lsn_allocator(1002);
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.mem_ctx_.do_trans_end(true, val_1002, val_1002, 0));
|
||||
|
||||
print(mvcc_row);
|
||||
}
|
||||
@ -367,22 +373,24 @@ TEST_F(TestMemtable, except)
|
||||
EXPECT_EQ(OB_SUCCESS, rg.init(1, this));
|
||||
|
||||
ObMvccRow *mvcc_row = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, rg.write(1, 2, mt, mvcc_row, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, 900, 900, 0));
|
||||
palf::SCN val_900;
|
||||
val_900.convert_for_lsn_allocator(900);
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg.write(1, 2, mt, mvcc_row, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, val_900, val_900, 0));
|
||||
|
||||
RunCtxGuard rg2;
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.init(2, this));
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.write(1, 3, mt, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.mem_ctx_.do_trans_end(true, 900, 900, 0));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.mem_ctx_.do_trans_end(true, val_900, val_900, 0));
|
||||
print(mvcc_row);
|
||||
|
||||
RunCtxGuard rg3;
|
||||
EXPECT_EQ(OB_SUCCESS, rg3.init(3, this));
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg3.write(1, 4, mt, 900));
|
||||
EXPECT_EQ(OB_SUCCESS, rg3.mem_ctx_.do_trans_end(true, 900, 900, 0));
|
||||
EXPECT_EQ(OB_SUCCESS, rg3.mem_ctx_.do_trans_end(true, val_900, val_900, 0));
|
||||
print(mvcc_row);
|
||||
}
|
||||
|
||||
@ -395,11 +403,14 @@ TEST_F(TestMemtable, multi_key)
|
||||
RunCtxGuard rg;
|
||||
EXPECT_EQ(OB_SUCCESS, rg.init(1, this));
|
||||
|
||||
palf::SCN val_900;
|
||||
val_900.convert_for_lsn_allocator(900);
|
||||
|
||||
ObMvccRow *mvcc_row = nullptr;
|
||||
ObMvccRow *mvcc_row2 = nullptr;
|
||||
EXPECT_EQ(OB_SUCCESS, rg.write(1, 10, mt, mvcc_row, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg.write(2, 20, mt, mvcc_row2, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, 900, 900, 0));
|
||||
EXPECT_EQ(OB_SUCCESS, rg.mem_ctx_.do_trans_end(true, val_900, val_900, 0));
|
||||
print(mvcc_row);
|
||||
print(mvcc_row2);
|
||||
|
||||
@ -409,7 +420,7 @@ TEST_F(TestMemtable, multi_key)
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.write(1, 100, mt, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.write(2, 200, mt, 1000));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.mem_ctx_.do_trans_end(true, 900, 900, 0));
|
||||
EXPECT_EQ(OB_SUCCESS, rg2.mem_ctx_.do_trans_end(true, val_900, val_900, 0));
|
||||
print(mvcc_row);
|
||||
print(mvcc_row2);
|
||||
}
|
||||
|
@ -305,7 +305,9 @@ int TestCompactionPolicy::mock_memtable(
|
||||
LOG_WARN("add to data_checkpoint failed", K(ret), KPC(memtable));
|
||||
mt_mgr->clean_tail_memtable_();
|
||||
} else if (palf::OB_MAX_SCN_TS_NS != end_border) { // frozen memtable
|
||||
memtable->snapshot_version_ = snapshot_version;
|
||||
palf::SCN snapshot_scn;
|
||||
snapshot_scn.convert_for_lsn_allocator(snapshot_version);
|
||||
memtable->snapshot_version_ = snapshot_scn;
|
||||
memtable->write_ref_cnt_ = 0;
|
||||
memtable->unsynced_cnt_ = 0;
|
||||
memtable->is_tablet_freeze_ = true;
|
||||
|
@ -218,16 +218,16 @@ int TestDmlCommon::create_data_tablet(
|
||||
} else {
|
||||
transaction::ObMulSourceDataNotifyArg trans_flags;
|
||||
trans_flags.tx_id_ = 123;
|
||||
trans_flags.log_ts_ = -1;
|
||||
trans_flags.scn_ = palf::SCN::invalid_scn();
|
||||
trans_flags.for_replay_ = false;
|
||||
|
||||
ObLS *ls = ls_handle.get_ls();
|
||||
if (OB_FAIL(ls->get_tablet_svr()->on_prepare_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to prepare create tablets", K(ret), K(arg));
|
||||
} else if (FALSE_IT(trans_flags.log_ts_ = INT64_MAX - 100)) {
|
||||
} else if (FALSE_IT(trans_flags.scn_ = palf::SCN::minus(palf::SCN::max_scn(), 100))) {
|
||||
} else if (OB_FAIL(ls->get_tablet_svr()->on_redo_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to redo create tablets", K(ret), K(arg));
|
||||
} else if (FALSE_IT(++trans_flags.log_ts_)) {
|
||||
} else if (FALSE_IT(trans_flags.scn_ = palf::SCN::plus(trans_flags.scn_, 1))) {
|
||||
} else if (OB_FAIL(ls->get_tablet_svr()->on_commit_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to commit create tablets", K(ret), K(arg));
|
||||
}
|
||||
|
@ -77,16 +77,16 @@ int TestLobCommon::create_data_tablet(
|
||||
} else {
|
||||
transaction::ObMulSourceDataNotifyArg trans_flags;
|
||||
trans_flags.tx_id_ = 123;
|
||||
trans_flags.log_ts_ = -1;
|
||||
trans_flags.scn_ = palf::SCN::invalid_scn();
|
||||
trans_flags.for_replay_ = false;
|
||||
|
||||
ObLS *ls = ls_handle.get_ls();
|
||||
if (OB_FAIL(ls->get_tablet_svr()->on_prepare_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to prepare create tablets", K(ret), K(arg));
|
||||
} else if (FALSE_IT(trans_flags.log_ts_ = INT64_MAX - 100)) {
|
||||
} else if (FALSE_IT(trans_flags.scn_ = palf::SCN::minus(palf::SCN::max_scn(), 100))) {
|
||||
} else if (OB_FAIL(ls->get_tablet_svr()->on_redo_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to redo create tablets", K(ret), K(arg));
|
||||
} else if (FALSE_IT(++trans_flags.log_ts_)) {
|
||||
} else if (FALSE_IT(trans_flags.scn_ = palf::SCN::plus(trans_flags.scn_, 1))) {
|
||||
} else if (OB_FAIL(ls->get_tablet_svr()->on_commit_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to commit create tablets", K(ret), K(arg));
|
||||
}
|
||||
|
@ -36,15 +36,15 @@ int TestTabletHelper::create_tablet(ObLSTabletService &ls_tablet_svr, obrpc::ObB
|
||||
int ret = common::OB_SUCCESS;
|
||||
transaction::ObMulSourceDataNotifyArg trans_flags;
|
||||
trans_flags.tx_id_ = 123;
|
||||
trans_flags.log_ts_ = -1;
|
||||
trans_flags.scn_ = palf::SCN::invalid_scn();
|
||||
trans_flags.for_replay_ = false;
|
||||
|
||||
if (OB_FAIL(ls_tablet_svr.on_prepare_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to prepare create tablets", K(ret), K(arg));
|
||||
} else if (FALSE_IT(trans_flags.log_ts_ = palf::OB_MAX_SCN_TS_NS - 100)) {
|
||||
} else if (FALSE_IT(trans_flags.scn_ = palf::SCN::minus(palf::SCN::max_scn(), 100))) {
|
||||
} else if (OB_FAIL(ls_tablet_svr.on_redo_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to redo create tablets", K(ret), K(arg));
|
||||
} else if (FALSE_IT(++trans_flags.log_ts_)) {
|
||||
} else if (FALSE_IT(trans_flags.scn_ = palf::SCN::plus(trans_flags.scn_, 1))) {
|
||||
} else if (OB_FAIL(ls_tablet_svr.on_commit_create_tablets(arg, trans_flags))) {
|
||||
STORAGE_LOG(WARN, "failed to commit create tablets", K(ret), K(arg));
|
||||
}
|
||||
|
Reference in New Issue
Block a user