[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

@ -264,7 +264,11 @@ TEST_F(TestMetaPointerMap, test_meta_pointer_map)
old_tablet->is_inited_ = true;
old_tablet->table_store_addr_.addr_.set_none_addr(); // mock empty_shell to pass test
ret = tablet_map_.compare_and_swap_addr_and_object(key, phy_addr, handle, handle);
ObUpdateTabletPointerParam param;
ret = handle.get_obj()->get_updating_tablet_pointer_param(param);
ASSERT_EQ(common::OB_SUCCESS, ret);
param.tablet_addr_ = phy_addr;
ret = tablet_map_.compare_and_swap_addr_and_object(key, handle, handle, param);
ASSERT_EQ(common::OB_SUCCESS, ret);
ObTablet *tablet = new ObTablet();
@ -277,7 +281,10 @@ TEST_F(TestMetaPointerMap, test_meta_pointer_map)
tablet->is_inited_ = true;
tablet->table_store_addr_.addr_.set_none_addr(); // mock empty_shell to pass test
ret = tablet_map_.compare_and_swap_addr_and_object(key, phy_addr, handle, tablet_handle);
ret = handle.get_obj()->get_updating_tablet_pointer_param(param);
ASSERT_EQ(common::OB_SUCCESS, ret);
param.tablet_addr_ = phy_addr;
ret = tablet_map_.compare_and_swap_addr_and_object(key, handle, tablet_handle, param);
ASSERT_EQ(common::OB_SUCCESS, ret);
ASSERT_EQ(1, tablet_map_.map_.size());
@ -354,7 +361,11 @@ TEST_F(TestMetaPointerMap, test_erase_and_load_concurrency)
old_tablet->is_inited_ = true;
old_tablet->table_store_addr_.addr_.set_none_addr(); // mock empty_shell to pass test
ret = tablet_map_.compare_and_swap_addr_and_object(key, phy_addr, handle, handle);
ObUpdateTabletPointerParam param;
ret = handle.get_obj()->get_updating_tablet_pointer_param(param);
ASSERT_EQ(common::OB_SUCCESS, ret);
param.tablet_addr_ = phy_addr;
ret = tablet_map_.compare_and_swap_addr_and_object(key, handle, handle, param);
ASSERT_EQ(common::OB_SUCCESS, ret);
ObTabletPointerHandle ptr_hdl(tablet_map_);