diff --git a/src/storage/backup/ob_backup_task.cpp b/src/storage/backup/ob_backup_task.cpp index 564f4491a2..ebd8c86c0d 100644 --- a/src/storage/backup/ob_backup_task.cpp +++ b/src/storage/backup/ob_backup_task.cpp @@ -3777,7 +3777,9 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_() if (OB_ISNULL(ls_backup_ctx_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("ls backup ctx should not be null", K(ret)); - } else if (OB_FAIL(fetch_backup_ls_meta_(rebuild_seq, backup_clog_checkpoint_scn))) { + } else if (OB_FAIL(fetch_cur_ls_rebuild_seq_(rebuild_seq))) { + LOG_WARN("failed to fetch cur ls rebuild seq", K(ret), K_(param)); + } else if (OB_FAIL(fetch_backup_ls_meta_(backup_clog_checkpoint_scn))) { LOG_WARN("failed to fetch backup ls meta checkpoint ts", K(ret), K_(param)); } else if (FALSE_IT(ls_backup_ctx_->rebuild_seq_ = rebuild_seq)) { // assign rebuild seq @@ -3811,10 +3813,33 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_() return ret; } -int ObLSBackupPrepareTask::fetch_backup_ls_meta_(int64_t &rebuild_seq, SCN &clog_checkpoint_scn) +int ObLSBackupPrepareTask::fetch_cur_ls_rebuild_seq_(int64_t &rebuild_seq) +{ + int ret = OB_SUCCESS; + rebuild_seq = -1; + storage::ObLSHandle ls_handle; + storage::ObLS *ls = NULL; + const uint64_t tenant_id = param_.tenant_id_; + const share::ObLSID &ls_id = param_.ls_id_; + MTL_SWITCH(tenant_id) { + ObLSMetaPackage cur_ls_meta; + if (OB_FAIL(get_ls_handle(tenant_id, ls_id, ls_handle))) { + LOG_WARN("failed to get ls handle", K(ret), K(tenant_id), K(ls_id)); + } else if (OB_ISNULL(ls = ls_handle.get_ls())) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("log stream not exist", K(ret), K(ls_id)); + } else if (OB_FAIL(ls->get_ls_meta_package(cur_ls_meta))) { + LOG_WARN("failed to get ls meta package", K(ret), K(tenant_id), K(ls_id)); + } else { + rebuild_seq = cur_ls_meta.ls_meta_.get_rebuild_seq(); + } + } + return ret; +} + +int ObLSBackupPrepareTask::fetch_backup_ls_meta_(share::SCN &clog_checkpoint_scn) { int ret = OB_SUCCESS; - rebuild_seq = 0; clog_checkpoint_scn.reset(); ObLSMetaPackage ls_meta_package; share::ObBackupDataStore store; @@ -3826,7 +3851,6 @@ int ObLSBackupPrepareTask::fetch_backup_ls_meta_(int64_t &rebuild_seq, SCN &clog ret = OB_INVALID_ARGUMENT; LOG_WARN("invalid ls meta package", K(ret), K(ls_meta_package)); } else { - rebuild_seq = ls_meta_package.ls_meta_.get_rebuild_seq(); clog_checkpoint_scn = ls_meta_package.ls_meta_.get_clog_checkpoint_scn(); } return ret; diff --git a/src/storage/backup/ob_backup_task.h b/src/storage/backup/ob_backup_task.h index fe2763fb42..8376fa895c 100644 --- a/src/storage/backup/ob_backup_task.h +++ b/src/storage/backup/ob_backup_task.h @@ -451,6 +451,8 @@ public: private: int may_need_advance_checkpoint_(); + int fetch_cur_ls_rebuild_seq_(int64_t &rebuild_seq); + int fetch_backup_ls_meta_(share::SCN &clog_checkpoint_scn); int check_tx_data_can_explain_user_data_(); int get_backup_tx_data_table_filled_tx_scn_(share::SCN &filled_tx_scn); int prepare_meta_index_store_(ObBackupMetaIndexStore &meta_index_store); @@ -459,7 +461,6 @@ private: int get_cur_ls_min_filled_tx_scn_(share::SCN &min_filled_tx_scn); int get_tablet_min_filled_tx_scn_(ObTabletHandle &tablet_handle, share::SCN &min_filled_tx_scn, bool &has_minor_sstable); - int fetch_backup_ls_meta_(int64_t &rebuild_seq, share::SCN &clog_checkpoint_scn); private: bool is_inited_;