From: Sangyoon Jang Date: Wed, 23 Aug 2023 09:28:09 +0000 (+0900) Subject: Check whether PkgFinder::Find() failed in PkgUpgraderFactory::MakeList() X-Git-Tag: accepted/tizen/7.0/unified/20231219.155827~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a09e028ab6d0ec2bc71d13cad61ddb08d04027e1;p=platform%2Fcore%2Fappfw%2Fpkgmgr-tool.git Check whether PkgFinder::Find() failed in PkgUpgraderFactory::MakeList() Change-Id: Id98de814d67f81807802663e0c7c577baba60011 Signed-off-by: Sangyoon Jang (cherry picked from commit 8fef45d63da582a3c0a0f73851afe2df97de7053) --- diff --git a/src/pkg_upgrade/include/pkg_upgrader_factory.hh b/src/pkg_upgrade/include/pkg_upgrader_factory.hh index 580a3fa..042e995 100644 --- a/src/pkg_upgrade/include/pkg_upgrader_factory.hh +++ b/src/pkg_upgrade/include/pkg_upgrader_factory.hh @@ -30,6 +30,7 @@ namespace common_fota { class PkgUpgraderFactory { public: std::list> MakeList(PkgFinder* finder); + bool IsFailed(); private: std::list> Merge( @@ -37,6 +38,8 @@ class PkgUpgraderFactory { const std::list& new_pkgs); const PkgContext* FindPkgById(const std::list& pkgs, std::string id); + + bool failed_ = false; }; } // common_fota diff --git a/src/pkg_upgrade/src/pkg_upgrader_factory.cc b/src/pkg_upgrade/src/pkg_upgrader_factory.cc index 42f17cb..c02c694 100644 --- a/src/pkg_upgrade/src/pkg_upgrader_factory.cc +++ b/src/pkg_upgrade/src/pkg_upgrader_factory.cc @@ -64,11 +64,16 @@ namespace common_fota { list> PkgUpgraderFactory::MakeList(PkgFinder* finder) { if (finder->Find() != 0) { LOG(ERROR) << "PkgFinder::Find() failed"; + failed_ = true; return {}; } return Merge(finder->GetOldPkgs(), finder->GetNewPkgs()); } +bool PkgUpgraderFactory::IsFailed() { + return failed_; +} + list> PkgUpgraderFactory::Merge( const list& old_pkgs, const list& new_pkgs) { list> pkgs; diff --git a/src/pkg_upgrade/src/upgrader.cc b/src/pkg_upgrade/src/upgrader.cc index 968e4d6..36c66e9 100644 --- a/src/pkg_upgrade/src/upgrader.cc +++ b/src/pkg_upgrade/src/upgrader.cc @@ -131,6 +131,10 @@ bool Upgrader::Process(PkgFinder* finder) { PkgUpgraderFactory factory; auto list = factory.MakeList(finder); + if (factory.IsFailed()) { + RemoveBackupDbs(); + return false; + } for (auto& pkg : list) { if (pkg->Upgrade()) { diff --git a/tests/unit_tests/pkg_upgrade/src/test_pkg_upgrader.cc b/tests/unit_tests/pkg_upgrade/src/test_pkg_upgrader.cc index e9e3454..bb5c081 100644 --- a/tests/unit_tests/pkg_upgrade/src/test_pkg_upgrader.cc +++ b/tests/unit_tests/pkg_upgrade/src/test_pkg_upgrader.cc @@ -616,7 +616,7 @@ TEST_F(PkgUpgraderTestForDBBackup, WithNotBackupFlag) { Upgrader upgrader; upgrader.SetDbPath(db_path); - EXPECT_TRUE(upgrader.Process(&finder_)); + EXPECT_FALSE(upgrader.Process(&finder_)); std::string new_user_version = GetUserVersion(parser_db_path); EXPECT_EQ(backup_user_version, new_user_version); @@ -635,7 +635,7 @@ TEST_F(PkgUpgraderTestForDBBackup, WithBackupFlag) { Upgrader upgrader; upgrader.SetDbPath(db_path); - EXPECT_TRUE(upgrader.Process(&finder_)); + EXPECT_FALSE(upgrader.Process(&finder_)); std::string new_user_version = GetUserVersion(parser_db_path); EXPECT_EQ(origin_user_version, new_user_version); @@ -650,7 +650,7 @@ TEST_F(PkgUpgraderTestForDBBackup, WithMalformedBackupDB) { Upgrader upgrader; upgrader.SetDbPath(db_path); - EXPECT_TRUE(upgrader.Process(&finder_)); + EXPECT_FALSE(upgrader.Process(&finder_)); std::string new_user_version = GetUserVersion(parser_db_path); EXPECT_EQ(origin_user_version, new_user_version);