diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index 1b9d438e8840b9a66b868ec1494725f9df77a0db..2194834f4d3b4b226759075b2d0c5df47ef6b7d0 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -519,15 +519,15 @@ private: void TimeoutRadarReport(IServiceReverse::Scenario scenario, std::string &bundleName); void CreateDirIfNotExist(const std::string &path); - + void OnBundleStarted(BError error, sptr session, const BundleName &bundleName); void HandleExceptionOnAppendBundles(sptr session, const vector &appendBundleNames, const vector &restoreBundleNames); - + void BundleBeginRadarReport(const std::string &bundleName, const ErrCode errCode, const IServiceReverse::Scenario scenario); - + void BundleEndRadarReport(const std::string &bundleName, const ErrCode errCode, const IServiceReverse::Scenario scenario); @@ -536,12 +536,18 @@ private: void ExtensionConnectFailRadarReport(const std::string &bundleName, const ErrCode errCode, const IServiceReverse::Scenario scenario); - + void UpdateFailedBundles(const std::string &bundleName, BundleTaskInfo taskInfo); void ClearFailedBundles(); std::vector GetSupportBackupBundleNames(vector &bundleInfos, - bool isIncBackup); + bool isIncBackup, const vector &srcBundleNames); + + void HandleNotSupportBundleNames(const std::vector &srcBundleNames, + std::vector &supportBundleNames, bool isIncBackup); + + void SetBundleIncDataInfo(const std::vector &bundlesToBackup, + std::vector &supportBundleNames); private: static sptr instance_; static std::mutex instanceLock_; diff --git a/services/backup_sa/src/module_external/bms_adapter.cpp b/services/backup_sa/src/module_external/bms_adapter.cpp index 33d21e327758bbcf8ebc95afa717942fbbe84900..71d2c98476a002384ab167ec9e7e3952193dd146 100644 --- a/services/backup_sa/src/module_external/bms_adapter.cpp +++ b/services/backup_sa/src/module_external/bms_adapter.cpp @@ -304,6 +304,7 @@ vector BundleMgrAdapter::GetBundleInfosForIncrement } if (!CreateIPCInteractionFiles(userId, bundleName, bundleNameTime.lastIncrementalTime, backupPara.includes, backupPara.excludes)) { + HILOGE("Create bundleInteraction dir failed, bundleName:%{public}s", bundleName.c_str()); continue; } bundleInfos.emplace_back(BJsonEntityCaps::BundleInfo {installedBundle.name, installedBundle.appIndex, diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index c21735e239bfac9a5154cd88e76fa304f8f88f35..6b743dec268e47ebe1a30501b0d8354b397d4eb8 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -788,7 +788,7 @@ ErrCode Service::AppendBundlesBackupSession(const vector &bundleName VerifyCaller(IServiceReverse::Scenario::BACKUP); auto bundleDetails = MakeDetailList(bundleNames); auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundleDetails, session_->GetSessionUserId()); - std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false); + std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false, bundleNames); session_->AppendBundles(supportBackupNames); SetCurrentBackupSessProperties(supportBackupNames, session_->GetSessionUserId(), backupInfos, false); OnStartSched(); @@ -830,7 +830,7 @@ ErrCode Service::AppendBundlesDetailsBackupSession(const vector &bun session_->GetSessionUserId(), isClearDataFlags); auto bundleDetails = MakeDetailList(bundleNames); auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundleDetails, session_->GetSessionUserId()); - std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false); + std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false, bundleNames); session_->AppendBundles(supportBackupNames); HandleCurGroupBackupInfos(backupInfos, bundleNameDetailMap, isClearDataFlags); OnStartSched(); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index b948183b43d0db62d321381addcd6fec6c2abb5c..d3ddc141c68a221af7501e4796883ac33a73de34 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -322,11 +322,9 @@ ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector bundleNames = GetBundleNameByDetails(bundlesToBackup); auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundlesToBackup, session_->GetSessionUserId()); - std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true); + std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true, bundleNames); session_->AppendBundles(supportBackupNames); - for (auto &bundleInfo : bundlesToBackup) { - session_->SetIncrementalData(bundleInfo); - } + SetBundleIncDataInfo(bundlesToBackup, supportBackupNames); SetCurrentBackupSessProperties(supportBackupNames, session_->GetSessionUserId(), backupInfos, true); OnStartSched(); session_->DecreaseSessionCnt(__PRETTY_FUNCTION__); @@ -364,11 +362,9 @@ ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vectorGetSessionUserId(), isClearDataFlags); auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundlesToBackup, session_->GetSessionUserId()); - std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true); - for (auto &bundleInfo : bundlesToBackup) { - session_->SetIncrementalData(bundleInfo); - } + std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true, bundleNames); session_->AppendBundles(supportBackupNames); + SetBundleIncDataInfo(bundlesToBackup, supportBackupNames); HandleCurGroupIncBackupInfos(backupInfos, bundleNameDetailMap, isClearDataFlags); OnStartSched(); session_->DecreaseSessionCnt(__PRETTY_FUNCTION__); @@ -717,4 +713,18 @@ void Service::SetCurrentBackupSessProperties(const vector &bundleNames, } HILOGI("end SetCurrentBackupSessProperties"); } + +void Service::SetBundleIncDataInfo(const std::vector& bundlesToBackup, + std::vector& supportBundleNames) +{ + for (auto &bundleInfo : bundlesToBackup) { + std::string bundleName = bundleInfo.bundleName; + auto it = std::find(supportBundleNames.begin(), supportBundleNames.end(), bundleName); + if (it == supportBundleNames.end()) { + HILOGE("Current bundle is not support to backup, bundleName:%{public}s", bundleName.c_str()); + continue; + } + session_->SetIncrementalData(bundleInfo); + } +} } // namespace OHOS::FileManagement::Backup diff --git a/services/backup_sa/src/module_ipc/sub_service.cpp b/services/backup_sa/src/module_ipc/sub_service.cpp index 96c10ca86f99328d57557c704426f87508f2531b..7d3fc2387f16747f2d3c5fb6e71a5b013d56f8f4 100644 --- a/services/backup_sa/src/module_ipc/sub_service.cpp +++ b/services/backup_sa/src/module_ipc/sub_service.cpp @@ -289,7 +289,7 @@ void Service::SetWant(AAFwk::Want &want, const BundleName &bundleName, const BCo } std::vector Service::GetSupportBackupBundleNames(vector &backupInfos, - bool isIncBackup) + bool isIncBackup, const std::vector &srcBundleNames) { HILOGI("Begin"); std::vector supportBackupNames; @@ -311,6 +311,7 @@ std::vector Service::GetSupportBackupBundleNames(vector &srcBundleNames, + std::vector &supportBundleNames, bool isIncBackup) +{ + for (auto bundleName : srcBundleNames) { + auto it = std::find(supportBundleNames.begin(), supportBundleNames.end(), bundleName); + if (it != supportBundleNames.end()) { + continue; + } + HILOGE("bundleName:%{public}s, can not find from supportBundleNames", bundleName.c_str()); + if (isIncBackup) { + session_->GetServiceReverseProxy()->IncrementalBackupOnBundleStarted( + BError(BError::Codes::SA_BUNDLE_INFO_EMPTY), bundleName); + } else { + session_->GetServiceReverseProxy()->BackupOnBundleStarted( + BError(BError::Codes::SA_BUNDLE_INFO_EMPTY), bundleName); + } + } +} } \ No newline at end of file diff --git a/tests/mock/module_ipc/service_mock.cpp b/tests/mock/module_ipc/service_mock.cpp index a03e7285e7ba0b5d77060545083a7c03b2768a1b..4d81c6bf820990c971d0e9e3c8bd360db1c79e38 100644 --- a/tests/mock/module_ipc/service_mock.cpp +++ b/tests/mock/module_ipc/service_mock.cpp @@ -289,9 +289,15 @@ void Service::UpdateFailedBundles(const std::string &bundleName, BundleTaskInfo void Service::ClearFailedBundles() {} -void Service::StartRunningTimer(const std::string &bundleName) {} -std::vector Service::GetSupportBackupBundleNames(vector&, bool) +std::vector Service::GetSupportBackupBundleNames(vector&, bool, + const vector&) { return {}; } + +void Service::StartRunningTimer(const std::string &bundleName) {} + +void Service::HandleNotSupportBundleNames(const vector&, vector&, bool) {} + +void Service::SetBundleIncDataInfo(const std::vector&, std::vector&) {} } // namespace OHOS::FileManagement::Backup