From: Tomasz Iwanek Date: Tue, 30 Aug 2016 13:52:38 +0000 (+0200) Subject: Enable recovery for delta request X-Git-Tag: accepted/tizen/common/20160905.171424~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fe0d3f7ed97d377b5036e7047c76dfefbdb5c938;p=platform%2Fcore%2Fappfw%2Fapp-installers.git Enable recovery for delta request To verify, crash delta update request (killing backend) and run recovery for package: $ backend -b $path_to_created_recovery_file Package state should be restore to the state before delta update. Change-Id: I0f6481a81af870cfa5ab9637a46106471b8596a5 --- diff --git a/src/common/step/configuration/step_configure.cc b/src/common/step/configuration/step_configure.cc index 2679eb4..2e5a437 100644 --- a/src/common/step/configuration/step_configure.cc +++ b/src/common/step/configuration/step_configure.cc @@ -115,9 +115,10 @@ Step::Status StepConfigure::process() { break; } - // Record recovery file for update and request modes + // Record recovery file if (pkgmgr_->GetRequestType() == RequestType::Install || - pkgmgr_->GetRequestType() == RequestType::Update) { + pkgmgr_->GetRequestType() == RequestType::Update || + pkgmgr_->GetRequestType() == RequestType::Delta) { std::unique_ptr recovery_file = recovery::RecoveryFile::CreateRecoveryFileForPath( GenerateTemporaryPath( diff --git a/src/common/step/filesystem/step_remove_temporary_directory.cc b/src/common/step/filesystem/step_remove_temporary_directory.cc index 23a2dc8..817c781 100644 --- a/src/common/step/filesystem/step_remove_temporary_directory.cc +++ b/src/common/step/filesystem/step_remove_temporary_directory.cc @@ -25,10 +25,13 @@ Step::Status StepRemoveTemporaryDirectory::RecoveryNew() { void StepRemoveTemporaryDirectory::RemoveFiles() { bf::path unpack_dir_path = context_->unpacked_dir_path.get(); + bf::path patch_dir_path = unpack_dir_path; + patch_dir_path += ".patch"; if (unpack_dir_path.empty()) return; boost::system::error_code error_code; bf::remove_all(unpack_dir_path, error_code); + bf::remove_all(patch_dir_path, error_code); return; } } // namespace filesystem diff --git a/src/common/step/recovery/step_open_recovery_file.cc b/src/common/step/recovery/step_open_recovery_file.cc index 848ec0c..38574fb 100644 --- a/src/common/step/recovery/step_open_recovery_file.cc +++ b/src/common/step/recovery/step_open_recovery_file.cc @@ -27,6 +27,9 @@ Step::Status StepOpenRecoveryFile::process() { case RequestType::Update: LOG(INFO) << "Running recovery for update installation"; break; + case RequestType::Delta: + LOG(INFO) << "Running recovery for delta installation"; + break; default: assert(false && "Not reached"); } diff --git a/src/common/step/recovery/step_recovery.cc b/src/common/step/recovery/step_recovery.cc index 153042b..43f0cf5 100644 --- a/src/common/step/recovery/step_recovery.cc +++ b/src/common/step/recovery/step_recovery.cc @@ -17,11 +17,17 @@ Step::Status StepRecovery::process() { return RecoveryNew(); case RequestType::Update: return RecoveryUpdate(); + case RequestType::Delta: + return RecoveryDelta(); default: LOG(ERROR) << "Recovery is not supported for given type of installation"; return Status::RECOVERY_ERROR; } } +Step::Status StepRecovery::RecoveryDelta() { + return RecoveryUpdate(); +} + } // namespace recovery } // namespace common_installer diff --git a/src/common/step/recovery/step_recovery.h b/src/common/step/recovery/step_recovery.h index eea22bc..e72f53e 100644 --- a/src/common/step/recovery/step_recovery.h +++ b/src/common/step/recovery/step_recovery.h @@ -34,6 +34,7 @@ class StepRecovery : public Step { virtual Status RecoveryNew() = 0; virtual Status RecoveryUpdate() = 0; + virtual Status RecoveryDelta(); }; } // namespace recovery