[BUG.FIX] Fixed compare-and-swap (CAS) tablet with an I/O operator.

This commit is contained in:
Tyshawn
2024-02-08 02:17:38 +00:00
committed by ob-robot
parent c41819169c
commit 418169fbd6
16 changed files with 224 additions and 97 deletions

View File

@ -185,15 +185,20 @@ void TestLSTabletService::construct_and_get_tablet_list(
ObTabletHandle old_handle;
ObTabletMapKey head_key(ls_id_, tablet_id);
ObUpdateTabletPointerParam param;
ret = t3m->get_tablet(WashTabletPriority::WTP_LOW, head_key, old_handle);
ASSERT_EQ(OB_SUCCESS, ret);
ret = t3m->compare_and_swap_tablet(head_key, old_handle, tablet_handle_head);
ret = tablet_handle_head.get_obj()->get_updating_tablet_pointer_param(param);
ASSERT_EQ(OB_SUCCESS, ret);
ret = t3m->compare_and_swap_tablet(head_key, old_handle, tablet_handle_head, param);
ASSERT_EQ(OB_SUCCESS, ret);
ObTabletMapKey node_key(ls_id_, node_tablet_id);
ret = t3m->get_tablet(WashTabletPriority::WTP_LOW, node_key, old_handle);
ASSERT_EQ(OB_SUCCESS, ret);
ret = t3m->compare_and_swap_tablet(node_key, old_handle, tablet_handle_tail);
ret = tablet_handle_tail.get_obj()->get_updating_tablet_pointer_param(param);
ASSERT_EQ(OB_SUCCESS, ret);
ret = t3m->compare_and_swap_tablet(node_key, old_handle, tablet_handle_tail, param);
ASSERT_EQ(OB_SUCCESS, ret);
}
@ -1104,8 +1109,11 @@ TEST_F(TestLSTabletService, update_tablet_ddl_commit_scn)
ASSERT_EQ(OB_NOT_SUPPORTED, ls_handle.get_ls()->get_tablet_svr()->update_tablet_ddl_commit_scn(data_tablet_id, ddl_commit_scn));
ObTabletHandle new_tablet_hdl;
ObUpdateTabletPointerParam param;
ASSERT_EQ(OB_SUCCESS, ObTabletPersister::persist_and_transform_tablet(*tablet_handle.get_obj(), new_tablet_hdl));
ASSERT_EQ(OB_SUCCESS, MTL(ObTenantMetaMemMgr *)->compare_and_swap_tablet(key, tablet_handle, new_tablet_hdl));
ret = new_tablet_hdl.get_obj()->get_updating_tablet_pointer_param(param);
ASSERT_EQ(OB_SUCCESS, ret);
ASSERT_EQ(OB_SUCCESS, MTL(ObTenantMetaMemMgr *)->compare_and_swap_tablet(key, tablet_handle, new_tablet_hdl, param));
ASSERT_EQ(OB_SUCCESS, ls_handle.get_ls()->get_tablet_svr()->update_tablet_ddl_commit_scn(data_tablet_id, ddl_commit_scn));
ASSERT_EQ(OB_SUCCESS, ls_handle.get_ls()->get_tablet_svr()->get_tablet(data_tablet_id, tablet_handle));