From 930004e0b90b2559b011a07d58266c4ac0813adb Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Thu, 24 Nov 2022 09:03:31 +0900 Subject: [PATCH] Fix handling pending pkgs Hanling pending pkgs doesn't need to affected by pid. Change-Id: Iac865f75614426f71c8c425650077ed9e02ccbfd Signed-off-by: Sangyoon Jang --- src/server/database/db_handle_provider.cc | 15 ++++----------- src/server/database/db_handle_provider.hh | 4 ++-- src/server/database/pkg_set_db_handler.cc | 3 +-- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/server/database/db_handle_provider.cc b/src/server/database/db_handle_provider.cc index fb14e54..79a0312 100644 --- a/src/server/database/db_handle_provider.cc +++ b/src/server/database/db_handle_provider.cc @@ -553,22 +553,15 @@ bool DBHandleProvider::ErasePID(pid_t pid) { return writer_pid_list_.erase(pid) == 1; } -void DBHandleProvider::RegisterPendingPackageInfo( - package_x* info, pid_t pid) { +void DBHandleProvider::RegisterPendingPackageInfo(package_x* info) { if (!info || !info->package) return; - pending_pkg_[pid].emplace(info->package); + pending_pkg_.emplace(info->package); } bool DBHandleProvider::UpdatePendingPackageInfo(sqlite3* db, pid_t pid, uid_t uid, const std::string& locale) { - auto it = pending_pkg_.find(pid); - if (it == pending_pkg_.end()) { - LOG(WARNING) << "There is no package that is pending by the pid : " << pid; - return true; - } - GHashTable* list = g_hash_table_new(g_str_hash, g_str_equal); if (list == nullptr) { LOG(ERROR) << "Out of memory"; @@ -581,7 +574,7 @@ bool DBHandleProvider::UpdatePendingPackageInfo(sqlite3* db, }; tmp_filter.cache_flag = true; tmp_filter.list = g_slist_append(tmp_filter.list, (gpointer)&node); - for (const auto& pkg : it->second) { + for (const auto& pkg : pending_pkg_) { pkg_map_.erase(pkg); for (auto& appid : pkg_app_map_[pkg]) { app_map_.erase(appid); @@ -620,7 +613,7 @@ bool DBHandleProvider::UpdatePendingPackageInfo(sqlite3* db, g_hash_table_destroy(list); g_slist_free(tmp_filter.list); - pending_pkg_.erase(pid); + pending_pkg_.clear(); return true; } diff --git a/src/server/database/db_handle_provider.hh b/src/server/database/db_handle_provider.hh index 6f54d0b..e165e05 100644 --- a/src/server/database/db_handle_provider.hh +++ b/src/server/database/db_handle_provider.hh @@ -60,7 +60,7 @@ class EXPORT_API DBHandleProvider { pid_t pid, pkgmgrinfo_filter_x* filter, const std::string& app); void TrimCache(); - void RegisterPendingPackageInfo(package_x* info, pid_t pid); + void RegisterPendingPackageInfo(package_x* info); bool UpdatePendingPackageInfo(sqlite3* db, pid_t pid, uid_t uid, const std::string& locale); bool UpdateCachePkg(sqlite3* db, uid_t uid, const std::string& pkgid, @@ -105,7 +105,7 @@ class EXPORT_API DBHandleProvider { std::unordered_map> pkg_map_; std::unordered_map> app_map_; std::unordered_map> pkg_app_map_; - std::unordered_map> pending_pkg_; + std::unordered_set pending_pkg_; }; } // namespace database diff --git a/src/server/database/pkg_set_db_handler.cc b/src/server/database/pkg_set_db_handler.cc index 58348c0..639949f 100644 --- a/src/server/database/pkg_set_db_handler.cc +++ b/src/server/database/pkg_set_db_handler.cc @@ -78,8 +78,7 @@ int PkgSetDBHandler::Execute() { auto lock = CacheFlag::GetWriterLock(); if (CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) - DBHandleProvider::GetInst(uid_) - .RegisterPendingPackageInfo(package_, GetPID()); + DBHandleProvider::GetInst(uid_).RegisterPendingPackageInfo(package_); return ret; } -- 2.7.4