diff --git a/src/storage/ddl/ob_ddl_merge_task.cpp b/src/storage/ddl/ob_ddl_merge_task.cpp index 87a3c3ec40..4125dd5e94 100644 --- a/src/storage/ddl/ob_ddl_merge_task.cpp +++ b/src/storage/ddl/ob_ddl_merge_task.cpp @@ -520,11 +520,11 @@ int ObTabletDDLUtil::prepare_index_data_desc(ObTablet &tablet, } int ObTabletDDLUtil::try_get_first_ddl_sstable(ObTablet &tablet, + ObTableStoreIterator &ddl_table_iter, blocksstable::ObSSTable *&first_sstable) { int ret = OB_SUCCESS; first_sstable = nullptr; - ObTableStoreIterator ddl_table_iter; ObITable *first_ddl_sstable = nullptr; if (OB_FAIL(tablet.get_ddl_sstables(ddl_table_iter))) { diff --git a/src/storage/ddl/ob_ddl_merge_task.h b/src/storage/ddl/ob_ddl_merge_task.h index 3e8e306ee1..e100191cf7 100644 --- a/src/storage/ddl/ob_ddl_merge_task.h +++ b/src/storage/ddl/ob_ddl_merge_task.h @@ -150,6 +150,7 @@ public: const blocksstable::ObSSTable *first_ddl_sstable, blocksstable::ObWholeDataStoreDesc &data_desc); static int try_get_first_ddl_sstable(ObTablet &tablet, + ObTableStoreIterator &ddl_table_iter, blocksstable::ObSSTable *&first_sstable); static int create_ddl_sstable(ObTablet &tablet, const ObTabletDDLParam &ddl_param, diff --git a/src/storage/ddl/ob_tablet_ddl_kv.cpp b/src/storage/ddl/ob_tablet_ddl_kv.cpp index 4d5f421ace..1be0f1ec2a 100644 --- a/src/storage/ddl/ob_tablet_ddl_kv.cpp +++ b/src/storage/ddl/ob_tablet_ddl_kv.cpp @@ -709,8 +709,9 @@ int ObDDLKV::close(ObTablet &tablet) ddl_param.start_scn_ = ddl_start_scn_; ddl_param.snapshot_version_ = snapshot_version_; ddl_param.data_format_version_ = data_format_version_; + ObTableStoreIterator ddl_table_iter; // need to hold first_sstable until finish ObSSTable *first_sstable = nullptr; - if (OB_FAIL(ObTabletDDLUtil::try_get_first_ddl_sstable(tablet, first_sstable))) { + if (OB_FAIL(ObTabletDDLUtil::try_get_first_ddl_sstable(tablet, ddl_table_iter, first_sstable))) { LOG_WARN("fail to get first sstable", K(ret), K(tablet)); } else if (OB_FAIL(ObTabletDDLUtil::create_ddl_sstable(tablet, ddl_param, meta_array, first_sstable, allocator, sstable))) { LOG_WARN("create ddl sstable failed", K(ret), K(ddl_param), KP(first_sstable));