From d50260c396b602ebfb0d0f6c75fb6e0f4d999bd0 Mon Sep 17 00:00:00 2001 From: zhuruigan Date: Thu, 18 Jan 2024 15:43:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=81=A2=E5=A4=8D=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhuruigan Change-Id: Iee0e1f8b9d24c410d9c739232430229b09d967b3 --- .../include/module_ipc/svc_restore_deps_manager.h | 2 +- services/backup_sa/src/module_ipc/service.cpp | 8 ++++++-- .../backup_sa/src/module_ipc/svc_restore_deps_manager.cpp | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/services/backup_sa/include/module_ipc/svc_restore_deps_manager.h b/services/backup_sa/include/module_ipc/svc_restore_deps_manager.h index d830cb2b6..cb83798b9 100644 --- a/services/backup_sa/include/module_ipc/svc_restore_deps_manager.h +++ b/services/backup_sa/include/module_ipc/svc_restore_deps_manager.h @@ -43,7 +43,7 @@ public: void AddRestoredBundles(const string &bundleName); vector GetAllBundles() const; bool IsAllBundlesRestored() const; - void UpdateToRestoreBundleMap(const string &bundleName, const string &fileName); + bool UpdateToRestoreBundleMap(const string &bundleName, const string &fileName); private: SvcRestoreDepsManager() {} diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index 5151796a3..5242d8567 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -282,7 +282,7 @@ static vector GetRestoreBundleNames(UniqueFd fd, .spaceOccupied = (*it).spaceOccupied, .allToBackup = (*it).allToBackup, .extensionName = restoreInfo.extensionName, - .restoreDeps = (*it).restoreDeps}; + .restoreDeps = restoreInfo.restoreDeps}; restoreBundleInfos.emplace_back(info); } return restoreBundleInfos; @@ -540,6 +540,11 @@ ErrCode Service::GetFileHandle(const string &bundleName, const string &fileName) try { HILOGI("Begin"); VerifyCaller(IServiceReverse::Scenario::RESTORE); + + bool updateRes = SvcRestoreDepsManager::GetInstance().UpdateToRestoreBundleMap(bundleName, fileName); + if (updateRes) { + return BError(BError::Codes::OK); + } auto action = session_->GetServiceSchedAction(bundleName); if (action == BConstants::ServiceSchedAction::RUNNING) { auto backUpConnection = session_->GetExtConnection(bundleName); @@ -553,7 +558,6 @@ ErrCode Service::GetFileHandle(const string &bundleName, const string &fileName) } session_->GetServiceReverseProxy()->RestoreOnFileReady(bundleName, fileName, move(fd)); } else { - SvcRestoreDepsManager::GetInstance().UpdateToRestoreBundleMap(bundleName, fileName); session_->SetExtFileNameRequest(bundleName, fileName); } return BError(BError::Codes::OK); diff --git a/services/backup_sa/src/module_ipc/svc_restore_deps_manager.cpp b/services/backup_sa/src/module_ipc/svc_restore_deps_manager.cpp index 4f760ba8d..115db71c4 100644 --- a/services/backup_sa/src/module_ipc/svc_restore_deps_manager.cpp +++ b/services/backup_sa/src/module_ipc/svc_restore_deps_manager.cpp @@ -151,13 +151,15 @@ bool SvcRestoreDepsManager::IsAllBundlesRestored() const return toRestoreBundleMap_.empty(); } -void SvcRestoreDepsManager::UpdateToRestoreBundleMap(const string &bundleName, const string &fileName) +bool SvcRestoreDepsManager::UpdateToRestoreBundleMap(const string &bundleName, const string &fileName) { unique_lock lock(lock_); auto it = toRestoreBundleMap_.find(bundleName); if (it != toRestoreBundleMap_.end()) { it->second.fileNames_.insert(fileName); + return true; } + return false; } } // namespace OHOS::FileManagement::Backup \ No newline at end of file -- Gitee