diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index f578df62fdc3e9e9a25ad4972d8d44c6a0911c35..6388887736ec4e3d5f68993547207baf213cbc4c 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -1265,6 +1265,7 @@ void Service::ExtConnectDone(string bundleName) clearRecorder_->FindClearBundleRecord(bundleName)) { session_->SetServiceSchedAction(bundleName, BConstants::ServiceSchedAction::CLEAN); } else { + sched_->RemoveExtConn(bundleName); session_->SetServiceSchedAction(bundleName, BConstants::ServiceSchedAction::RUNNING); if (totalStatistic_ != nullptr) { session_->UpdateDfxInfo(bundleName, totalStatistic_->GetUniqId()); diff --git a/services/backup_sa/src/module_ipc/sub_service.cpp b/services/backup_sa/src/module_ipc/sub_service.cpp index d308767eec3500442e4c18e103a0f986fc7e9951..37300712a75d1da46c1cbbb52e66b92e2aa55fb0 100644 --- a/services/backup_sa/src/module_ipc/sub_service.cpp +++ b/services/backup_sa/src/module_ipc/sub_service.cpp @@ -662,6 +662,7 @@ void Service::ExtConnectDied(const string &callName) } std::lock_guard lock(mutexPtr->callbackMutex); /* Clear Timer */ + sched_->RemoveExtConn(callName); session_->StopFwkTimer(callName); session_->StopExtTimer(callName); auto backUpConnection = session_->GetExtConnection(callName); diff --git a/services/backup_sa/src/module_sched/sched_scheduler.cpp b/services/backup_sa/src/module_sched/sched_scheduler.cpp index 70971f2912e9332a196fa343d59fe21189a0bf7e..f9c9e25447b690fe8accbf6b46b80ff404b8a74b 100644 --- a/services/backup_sa/src/module_sched/sched_scheduler.cpp +++ b/services/backup_sa/src/module_sched/sched_scheduler.cpp @@ -219,18 +219,6 @@ void SchedScheduler::StartExecuteBundleTask(const std::string &bundleName, BCons } } else if (action == BConstants::ServiceSchedAction::RUNNING) { HILOGI("Current bundle %{public}s process is running", bundleName.data()); - unique_lock lock(lock_); - auto iter = find_if(bundleTimeVec_.begin(), bundleTimeVec_.end(), [&bundleName](auto &obj) { - auto &[bName, iTime] = obj; - return bName == bundleName; - }); - if (iter == bundleTimeVec_.end()) { - throw BError(BError::Codes::SA_INVAL_ARG, "Failed to find timer"); - } - auto &[bName, iTime] = *iter; - // unregister timer - extTime_.Unregister(iTime); - lock.unlock(); //notify AppGallery to start restore if (reversePtr_ != nullptr) { reversePtr_->StartRunningTimer(bundleName);