diff --git a/src/storage/ls/ob_ls_tablet_service.cpp b/src/storage/ls/ob_ls_tablet_service.cpp index 9fb3aadec..2080df036 100644 --- a/src/storage/ls/ob_ls_tablet_service.cpp +++ b/src/storage/ls/ob_ls_tablet_service.cpp @@ -2242,8 +2242,6 @@ int ObLSTabletService::create_memtable( ObTabletHandle old_tablet_handle; const ObTabletMapKey key(ls_->get_ls_id(), tablet_id); ObTabletHandle new_tablet_handle; - ObTabletMemberWrapper table_store; - ObTabletMemberWrapper autoinc_seq; ObTimeGuard time_guard("ObLSTabletService::create_memtable", 10_ms); if (OB_UNLIKELY(!is_inited_)) { diff --git a/src/storage/meta_mem/ob_tablet_pointer_map.cpp b/src/storage/meta_mem/ob_tablet_pointer_map.cpp index aaab4276a..9763321b5 100644 --- a/src/storage/meta_mem/ob_tablet_pointer_map.cpp +++ b/src/storage/meta_mem/ob_tablet_pointer_map.cpp @@ -693,11 +693,17 @@ int ObTabletPointerMap::compare_and_swap_addr_and_object( } if (OB_SUCC(ret)) { - t_ptr->set_addr_with_reset_obj(new_addr); - t_ptr->set_obj(new_guard); - if (OB_FAIL(t_ptr->set_tablet_attr(*new_guard.get_obj()))) { + if (t_ptr->get_addr().is_equal_for_persistence(new_addr)) { + // no need to update tablet attr, including creating memtables or updating the same tablets + STORAGE_LOG(DEBUG, "no need to update tablet attr", K(ret), K(new_addr), K(t_ptr->get_addr()), K(new_guard), K(old_guard)); + } else if (OB_FAIL(t_ptr->set_tablet_attr(*new_guard.get_obj()))) { STORAGE_LOG(WARN, "failed to update tablet attr", K(ret), K(key), K(new_addr), K(new_guard)); } + + if (OB_SUCC(ret)) { + t_ptr->set_addr_with_reset_obj(new_addr); + t_ptr->set_obj(new_guard); + } } }