diff --git a/src/storage/tablet/ob_i_tablet_mds_interface.ipp b/src/storage/tablet/ob_i_tablet_mds_interface.ipp index b233d98e75..f710160d6d 100644 --- a/src/storage/tablet/ob_i_tablet_mds_interface.ipp +++ b/src/storage/tablet/ob_i_tablet_mds_interface.ipp @@ -195,20 +195,16 @@ inline int ObITabletMdsInterface::get_mds_data_from_tablet &aux_tablet_info_addr = get_mds_data_().aux_tablet_info_.committed_kv_; - if (CLICK_FAIL(ObTabletMdsData::load_aux_tablet_info(allocator, aux_tablet_info_addr, aux_tablet_info))) { + if (CLICK_FAIL(ObTabletMdsData::load_aux_tablet_info(aux_tablet_info_addr, aux_tablet_info))) { MDS_LOG_GET(WARN, "failed to load auto inc seq"); - } else if (nullptr == aux_tablet_info) { + } else if (!aux_tablet_info.is_valid()) { ret = OB_EMPTY_RESULT; - } else if (CLICK_FAIL(read_op(*aux_tablet_info))) { + } else if (CLICK_FAIL(read_op(aux_tablet_info))) { MDS_LOG_GET(WARN, "failed to read_op"); } - - ObTabletObjLoadHelper::free(allocator, aux_tablet_info); - return ret; #undef PRINT_WRAPPER } diff --git a/src/storage/tablet/ob_tablet_mds_data.cpp b/src/storage/tablet/ob_tablet_mds_data.cpp index 3426867f1a..ad95a10d92 100644 --- a/src/storage/tablet/ob_tablet_mds_data.cpp +++ b/src/storage/tablet/ob_tablet_mds_data.cpp @@ -1153,30 +1153,24 @@ int ObTabletMdsData::load_auto_inc_seq( } int ObTabletMdsData::load_aux_tablet_info( - common::ObIAllocator &allocator, const ObTabletComplexAddr &complex_addr, - ObTabletBindingMdsUserData *&aux_tablet_info) + ObTabletBindingMdsUserData &aux_tablet_info) { int ret = OB_SUCCESS; - aux_tablet_info = nullptr; - ObTabletBindingMdsUserData *ptr = nullptr; + aux_tablet_info.reset(); if (OB_UNLIKELY(!complex_addr.is_valid())) { ret = OB_INVALID_ARGUMENT; LOG_WARN("invalid addr", K(ret), K(complex_addr)); } else if (complex_addr.is_none_object()) { // do nothing - } else if (OB_FAIL(ObTabletObjLoadHelper::alloc_and_new(allocator, ptr))) { - LOG_WARN("failed to alloc and new", K(ret)); } else if (complex_addr.is_memory_object()) { const mds::MdsDumpKV *dump_kv = complex_addr.ptr_; const common::ObString &str = dump_kv->v_.user_data_; int64_t pos = 0; if (!dump_kv->is_valid() || str.empty()) { - ObTabletObjLoadHelper::free(allocator, ptr); - ptr = nullptr; LOG_INFO("read empty aux tablet info", K(ret), K(complex_addr)); - } else if (OB_FAIL(ptr->deserialize(str.ptr(), str.length(), pos))) { + } else if (OB_FAIL(aux_tablet_info.deserialize(str.ptr(), str.length(), pos))) { LOG_WARN("failed to deserialize aux tablet info", K(ret), K(str)); } } else if (complex_addr.is_disk_object()) { @@ -1195,10 +1189,8 @@ int ObTabletMdsData::load_aux_tablet_info( LOG_WARN("unexpected null member", K(ret)); } else if (!aux_tablet_info_cache->is_valid()) { // no need to copy - ObTabletObjLoadHelper::free(allocator, ptr); - ptr = nullptr; LOG_INFO("empty aux tablet info", K(ret)); - } else if (OB_FAIL(ptr->assign(*aux_tablet_info_cache))) { + } else if (OB_FAIL(aux_tablet_info.assign(*aux_tablet_info_cache))) { LOG_WARN("failed to copy", K(ret)); } } else { @@ -1206,14 +1198,6 @@ int ObTabletMdsData::load_aux_tablet_info( LOG_WARN("unexpected complex addr type", K(ret), K(complex_addr)); } - if (OB_FAIL(ret)) { - if (nullptr != ptr) { - allocator.free(ptr); - } - } else { - aux_tablet_info = ptr; - } - return ret; } diff --git a/src/storage/tablet/ob_tablet_mds_data.h b/src/storage/tablet/ob_tablet_mds_data.h index 431a8067b5..0bb5075ef7 100644 --- a/src/storage/tablet/ob_tablet_mds_data.h +++ b/src/storage/tablet/ob_tablet_mds_data.h @@ -127,9 +127,8 @@ public: const ObTabletComplexAddr &complex_addr, share::ObTabletAutoincSeq *&auto_inc_seq); static int load_aux_tablet_info( - common::ObIAllocator &allocator, const ObTabletComplexAddr &complex_addr, - ObTabletBindingMdsUserData *&aux_tablet_info); + ObTabletBindingMdsUserData &aux_tablet_info); static int build_tablet_status( common::ObArenaAllocator &allocator, const ObTabletTxMultiSourceDataUnit &tx_data,