fix double free storage schema issue and refactor some code

This commit is contained in:
hiddenbomb
2023-11-16 11:10:57 +00:00
committed by ob-robot
parent 70caa940a9
commit 5f0bc533d0
14 changed files with 72 additions and 84 deletions

View File

@ -482,7 +482,7 @@ int ObTabletDDLUtil::prepare_index_data_desc(ObTablet &tablet,
data_desc.reset();
ObLSService *ls_service = MTL(ObLSService *);
ObArenaAllocator tmp_arena("DDLIdxDescTmp");
const ObStorageSchema *storage_schema = nullptr;
ObStorageSchema *storage_schema = nullptr;
const ObTabletID &tablet_id = tablet.get_tablet_meta().tablet_id_;
const ObLSID &ls_id = tablet.get_tablet_meta().ls_id_;
if (OB_UNLIKELY(!ls_id.is_valid() || !tablet_id.is_valid() || snapshot_version <= 0 || data_format_version < 0)) {
@ -515,7 +515,7 @@ int ObTabletDDLUtil::prepare_index_data_desc(ObTablet &tablet,
}
}
}
ObTablet::free_storage_schema(tmp_arena, storage_schema);
ObTabletObjLoadHelper::free(tmp_arena, storage_schema);
return ret;
}
@ -618,7 +618,7 @@ int ObTabletDDLUtil::create_ddl_sstable(ObTablet &tablet,
{
int ret = OB_SUCCESS;
ObArenaAllocator tmp_arena("CreateDDLSstTmp");
const ObStorageSchema *storage_schema = nullptr;
ObStorageSchema *storage_schema = nullptr;
SMART_VAR(ObSSTableMergeRes, res) {
if (OB_UNLIKELY(nullptr == sstable_index_builder || !ddl_param.is_valid())) {
ret = OB_INVALID_ARGUMENT;
@ -706,7 +706,7 @@ int ObTabletDDLUtil::create_ddl_sstable(ObTablet &tablet,
}
}
}
ObTablet::free_storage_schema(tmp_arena, storage_schema);
ObTabletObjLoadHelper::free(tmp_arena, storage_schema);
}
return ret;
}
@ -725,7 +725,7 @@ int ObTabletDDLUtil::update_ddl_table_store(ObTablet &tablet,
ObLSHandle ls_handle;
ObTabletHandle tablet_handle;
ObArenaAllocator allocator;
const ObStorageSchema *tablet_storage_schema = nullptr;
ObStorageSchema *tablet_storage_schema = nullptr;
if (OB_FAIL(ls_service->get_ls(ddl_param.ls_id_, ls_handle, ObLSGetMod::DDL_MOD))) {
LOG_WARN("get ls failed", K(ret), K(ddl_param));
} else if (OB_FAIL(tablet.load_storage_schema(allocator, tablet_storage_schema))) {
@ -758,7 +758,7 @@ int ObTabletDDLUtil::update_ddl_table_store(ObTablet &tablet,
LOG_INFO("ddl update table store success", K(ddl_param), K(table_store_param), K(sstable));
}
}
ObTablet::free_storage_schema(allocator, tablet_storage_schema);
ObTabletObjLoadHelper::free(allocator, tablet_storage_schema);
}
return ret;
}