Fix handling pending pkgs 98/284698/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Thu, 24 Nov 2022 00:03:31 +0000 (09:03 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Thu, 24 Nov 2022 00:03:31 +0000 (09:03 +0900)
Hanling pending pkgs doesn't need to affected by pid.

Change-Id: Iac865f75614426f71c8c425650077ed9e02ccbfd
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/server/database/db_handle_provider.cc
src/server/database/db_handle_provider.hh
src/server/database/pkg_set_db_handler.cc

index fb14e54..79a0312 100644 (file)
@@ -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;
 }
 
index 6f54d0b..e165e05 100644 (file)
@@ -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<std::string, std::shared_ptr<package_x>> pkg_map_;
   std::unordered_map<std::string, std::shared_ptr<application_x>> app_map_;
   std::unordered_map<std::string, std::unordered_set<std::string>> pkg_app_map_;
-  std::unordered_map<pid_t, std::unordered_set<std::string>> pending_pkg_;
+  std::unordered_set<std::string> pending_pkg_;
 };
 
 }  // namespace database
index 58348c0..639949f 100644 (file)
@@ -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;
 }