[bug fix]hold first_sstable when create ddl sstable
This commit is contained in:
		| @ -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))) { | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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)); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 renju96
					renju96