Fix ResInfoManager
authorHwankyu Jhun <h.jhun@samsung.com>
Thu, 16 Dec 2021 01:41:53 +0000 (10:41 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 16 Dec 2021 03:11:06 +0000 (12:11 +0900)
If the user res info doesn't exist, AMD should create a new UserResInfo for
considering db corruption.

Change-Id: I6a36cf8179b3e94de7a0b4040fe0ace3d473bfce
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/lib/amd_res_info.cc

index b65fac5..49d057a 100644 (file)
@@ -66,6 +66,12 @@ static int __on_appinfo_insert(const char* msg, int arg1, int arg2,
   uid_t uid = (uid_t)arg1;
   int res_control_cnt = 0;
 
+  ResInfoManager& manager = ResInfoManager::GetInst();
+  if (!manager.IsUserExist(uid)) {
+    if (!manager.CreateNewUser(uid))
+      _E("Failed to create new user. uid(%u)", uid);
+  }
+
   if (pkgmgrinfo_appinfo_foreach_res_control(handle,
       [](const char*, const char*, const char*,
           const char*, void* user_data) -> int {
@@ -79,10 +85,7 @@ static int __on_appinfo_insert(const char* msg, int arg1, int arg2,
   if (!res_control_cnt)
     return NOTI_CONTINUE;
 
-  ResInfoManager& manager = ResInfoManager::GetInst();
-
   manager.AddUserResAppInfo(handle, uid);
-
   return NOTI_CONTINUE;
 }