Add pid set logic at request handlers
authorJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 8 Mar 2021 08:04:48 +0000 (17:04 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 8 Mar 2021 08:04:48 +0000 (17:04 +0900)
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
src/common/database/cert_set_db_handler.cc
src/common/database/db_handle_provider.cc
src/common/database/db_handle_provider.hh
src/common/database/pkg_set_db_handler.cc
src/common/request_handler/command_request_handler.cc
src/common/request_handler/get_cert_request_handler.cc
src/common/request_handler/get_depinfo_request_handler.cc
src/common/request_handler/get_pkginfo_request_handler.cc
src/common/request_handler/query_request_handler.cc
src/common/request_handler/set_cert_request_handler.cc
src/common/request_handler/set_pkginfo_request_handler.cc

index dc021ed..5e18075 100644 (file)
@@ -37,7 +37,7 @@ int CertSetDBHandler::Execute() {
   SetOpType(OPERATION_TYPE_WRITE);
   SetDBType(DB_TYPE_FILE_CERTDB);
 
-  DBHandleProvider::GetInst(uid_).SetMemoryMode(true);
+  DBHandleProvider::GetInst(uid_).SetMemoryMode(GetPID(), true);
   sqlite3 *conn = GetConnection().front();
   int ret = certinfo_internal_set(conn, handle_->pkgid, handle_, uid_);
 
index d65e691..9354588 100644 (file)
@@ -159,7 +159,7 @@ sqlite3* DBHandleProvider::GetMemoryDBHandle(const std::string& filedb_path,
   return memorydb;
 }
 
-void DBHandleProvider::SetMemoryMode(bool flag) {
+void DBHandleProvider::SetMemoryMode(int pid, bool flag) {
   std::unique_lock<std::mutex> u(lock_);
   if (is_memory_ == flag)
     return;
@@ -182,6 +182,12 @@ void DBHandleProvider::SetMemoryMode(bool flag) {
     parser_memory_db_handle_.reset(nullptr);
     cert_memory_db_handle_.reset(nullptr);
     global_parser_memory_db_handle_.reset(nullptr);
+    std::vector<int>::iterator it =
+        std::find(pid_list_.begin(), pid_list_.end(), pid);
+    if (it != pid_list_.end())
+      pid_list_.erase(it);
+    else
+      LOGE("Given pid is not exists in pid list : %d", pid);
   }
 
   LOGD("Set Memory mode : %s", flag ? "Memory" : "File");
index c1eb90c..5c673c4 100644 (file)
@@ -40,7 +40,7 @@ class EXPORT_API DBHandleProvider {
   static DBHandleProvider& GetInst(uid_t uid);
   std::vector<std::string> GetParserDBPath(int pid);
   std::string GetCertDBPath(int pid);
-  void SetMemoryMode(bool flag);
+  void SetMemoryMode(int pid, bool flag);
 
  private:
   DBHandleProvider(uid_t uid);
index cda746c..1f95172 100644 (file)
@@ -51,7 +51,7 @@ int PkgSetDBHandler::Execute() {
 
   int ret = 0;
 
-  DBHandleProvider::GetInst(uid_).SetMemoryMode(true);
+  DBHandleProvider::GetInst(uid_).SetMemoryMode(GetPID(), true);
   std::vector<sqlite3*> conn_list = GetConnection();
   sqlite3* conn = conn_list.front();
   if (write_type_ == Insert) {
index 45d428b..8ba821e 100644 (file)
@@ -36,7 +36,7 @@ bool CommandRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   if (parcel->GetCmd() == CommandType::RemoveCache) {
-    pkgmgr_common::DBHandleProvider::GetInst(parcel->GetUid()).SetMemoryMode(false);
+    pkgmgr_common::DBHandleProvider::GetInst(parcel->GetUid()).SetMemoryMode(GetPID(), false);
     result_.WriteInt32(0);
   }
 
index 82b704d..0e8cd79 100644 (file)
@@ -37,6 +37,7 @@ bool GetCertRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   CertGetDBHandler db(parcel->GetUid());
+  db.SetPID(GetPID());
   db.SetLocale(locale);
   db.SetPkgID(parcel->GetPkgId());
 
index 3765672..bb7b628 100644 (file)
@@ -38,6 +38,7 @@ bool GetDepinfoRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   DepInfoGetDBHandler db(parcel->GetUid());
+  db.SetPID(GetPID());
   db.SetPkgID(parcel->GetPkgID());
   int ret = db.Execute();
 
index f2b8da3..46e6350 100644 (file)
@@ -38,6 +38,7 @@ bool GetPkginfoRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   PkgGetDBHandler db(parcel->GetUid());
+  db.SetPID(GetPID());
   db.SetLocale(locale);
   db.SetFilter(const_cast<pkgmgrinfo_filter_x*>(parcel->GetFilter()));
   int ret = db.Execute();
index 7949a71..ace0c19 100644 (file)
@@ -38,6 +38,7 @@ bool QueryRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   QueryHandler db(parcel->GetUid());
+  db.SetPID(GetPID());
   db.SetLocale(locale);
   db.SetQuery(parcel->GetQueries());
   db.SetDBType(parcel->GetDBType());
index b28c063..99bd010 100644 (file)
@@ -32,6 +32,7 @@ bool SetCertRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   CertSetDBHandler db(parcel->GetUid());
+  db.SetPID(GetPID());
   db.SetLocale(locale);
   db.SetCertHandle(const_cast<pkgmgr_certinfo_x*>(parcel->GetCertInfo()));
 
index 5823f72..49e52af 100644 (file)
@@ -39,6 +39,7 @@ bool SetPkginfoRequestHandler::HandleRequest(unsigned char* data, int size,
   }
 
   PkgSetDBHandler db(parcel->GetUid());
+  db.SetPID(GetPID());
   db.SetLocale(locale);
   db.SetWriteType(parcel->GetWriteType());