diff --git a/src/storage/backup/ob_backup_factory.cpp b/src/storage/backup/ob_backup_factory.cpp index bca80fb07..d5e95723a 100644 --- a/src/storage/backup/ob_backup_factory.cpp +++ b/src/storage/backup/ob_backup_factory.cpp @@ -275,6 +275,16 @@ void ObLSBackupFactory::free(ObBackupTabletCtx *&ctx) OB_DELETE(ObBackupTabletCtx, ObModIds::BACKUP, ctx); } +void ObLSBackupFactory::free(ObBackupOrderedMacroBlockIndexIterator *&iterator) +{ + OB_DELETE(ObBackupOrderedMacroBlockIndexIterator, ObModIds::BACKUP, iterator); +} + +void ObLSBackupFactory::free(ObBackupUnorderedMacroBlockIndexIterator *&iterator) +{ + OB_DELETE(ObBackupUnorderedMacroBlockIndexIterator, ObModIds::BACKUP, iterator); +} + void ObLSBackupFactory::free(ObBackupSSTableSecMetaIterator *&iterator) { OB_DELETE(ObBackupSSTableSecMetaIterator, ObModIds::BACKUP, iterator); diff --git a/src/storage/backup/ob_backup_factory.h b/src/storage/backup/ob_backup_factory.h index 430ab3e9a..30ff8f1ab 100644 --- a/src/storage/backup/ob_backup_factory.h +++ b/src/storage/backup/ob_backup_factory.h @@ -55,7 +55,8 @@ public: static void free(ObBackupSSTableSecMetaIterator *&iterator); static void free(ObBackupWrapperIODevice *device); static void free(ObIBackupTabletMetaIterator *device); - + static void free(ObBackupUnorderedMacroBlockIndexIterator *&iterator); + static void free(ObBackupOrderedMacroBlockIndexIterator *&iterator); private: template static void component_free(IT *component) diff --git a/src/storage/backup/ob_backup_index_merger.cpp b/src/storage/backup/ob_backup_index_merger.cpp index 79f40fcda..d8e219ba9 100644 --- a/src/storage/backup/ob_backup_index_merger.cpp +++ b/src/storage/backup/ob_backup_index_merger.cpp @@ -1929,6 +1929,10 @@ int ObBackupUnorderdMacroBlockIndexMerger::alloc_merge_iter_(const bool tenant_l LOG_WARN("failed to init macro block index iterator", K(ret), K(merge_param), K(ls_id), K(turn_id)); } else { iter = tmp_iter; + tmp_iter = NULL; + } + if (OB_NOT_NULL(tmp_iter)) { + ObLSBackupFactory::free(tmp_iter); } } return ret; @@ -1992,8 +1996,12 @@ int ObBackupUnorderdMacroBlockIndexMerger::prepare_prev_backup_set_index_iter_( LOG_WARN("failed to init backup macro range index iterator", K(ret), K(merge_param), K(prev_backup_set_desc), K(prev_tenant_index_retry_id)); } else { iter = tmp_iter; + tmp_iter = NULL; LOG_INFO("prepare prev backup set index iter", K(prev_backup_set_desc), K(merge_param)); } + if(OB_NOT_NULL(tmp_iter)){ + ObLSBackupFactory::free(tmp_iter); + } return ret; }