From 63f2568d829db9dedb34e0adc1edf17a8a6bba99 Mon Sep 17 00:00:00 2001 From: Ilho Kim Date: Tue, 16 Aug 2022 20:04:31 +0900 Subject: [PATCH] Fix the use of cache if not the requested uid default Because the cache of pkginfo, appinfo is created for the default user the cache can't be used unless it is a default user Change-Id: I724ebc89b18883d65b53c168024f110c83a848ab Signed-off-by: Ilho Kim --- src/server/database/abstract_db_handler.cc | 6 ++++++ src/server/database/abstract_db_handler.hh | 1 + src/server/database/appinfo_db_handler.cc | 3 ++- src/server/database/pkg_get_db_handler.cc | 3 ++- src/server/runner.cc | 11 +++++------ src/server/runner.hh | 1 + 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/server/database/abstract_db_handler.cc b/src/server/database/abstract_db_handler.cc index 8aa4739..2215c30 100644 --- a/src/server/database/abstract_db_handler.cc +++ b/src/server/database/abstract_db_handler.cc @@ -253,5 +253,11 @@ pkgmgr_common::DBOperationType AbstractDBHandler::GetOpType() { return op_type_; } +uid_t AbstractDBHandler::GetDefaultUser() { + static uid_t default_user = tzplatform_getuid(TZ_SYS_DEFAULT_USER); + + return default_user; +} + } // namespace database } // namespace pkgmgr_server diff --git a/src/server/database/abstract_db_handler.hh b/src/server/database/abstract_db_handler.hh index ced7b5e..894e1de 100644 --- a/src/server/database/abstract_db_handler.hh +++ b/src/server/database/abstract_db_handler.hh @@ -55,6 +55,7 @@ class EXPORT_API AbstractDBHandler { virtual std::vector> GetConnection(); void ClearDBHandle(); const std::string& GetLocale(); + static uid_t GetDefaultUser(); static std::shared_timed_mutex lock_; diff --git a/src/server/database/appinfo_db_handler.cc b/src/server/database/appinfo_db_handler.cc index 31039ef..c6a891a 100644 --- a/src/server/database/appinfo_db_handler.cc +++ b/src/server/database/appinfo_db_handler.cc @@ -115,7 +115,8 @@ int AppInfoDBHandler::Execute() { if (is_writer) return GetHandleFromDB(conn_list); - if (CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) { + if (uid_ <= GetDefaultUser() && + CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) { auto cache_lock = CacheFlag::GetReaderLock(); if (cache_lock.try_lock() && CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) diff --git a/src/server/database/pkg_get_db_handler.cc b/src/server/database/pkg_get_db_handler.cc index 0e67de7..9438dec 100644 --- a/src/server/database/pkg_get_db_handler.cc +++ b/src/server/database/pkg_get_db_handler.cc @@ -128,7 +128,8 @@ int PkgGetDBHandler::Execute() { if (is_writer) return GetHandleFromDB(conn_list); - if (CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) { + if (uid_ <= GetDefaultUser() && + CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) { auto cache_lock = CacheFlag::GetReaderLock(); if (cache_lock.try_lock() && CacheFlag::GetStatus() == CacheFlag::Status::PREPARED) diff --git a/src/server/runner.cc b/src/server/runner.cc index f1092d4..d8f8b76 100644 --- a/src/server/runner.cc +++ b/src/server/runner.cc @@ -57,14 +57,13 @@ Runner::Runner(unsigned int thread_num) { SetCPUInheritance(); auto condition = static_cast(G_IO_IN); sid_ = g_unix_fd_add(server_->GetFd(), condition, OnReceiveRequest, this); + default_uid_ = tzplatform_getuid(TZ_SYS_DEFAULT_USER); pkgmgr_common::SystemLocale::GetInst().RegisterEvent(this); thread_pool_->SetLocale(pkgmgr_common::SystemLocale::GetInst().Get()); - if (CacheFlag::SetPreparing()) { - QueueRequest( - std::make_shared( - tzplatform_getuid(TZ_SYS_DEFAULT_USER))); - } + if (CacheFlag::SetPreparing()) + QueueRequest(std::make_shared(default_uid_)); + LOGI("Start Runner"); } @@ -86,7 +85,7 @@ int Runner::OnReceiveRequest(int fd, GIOCondition cond, void* user_data) { if (CacheFlag::SetPreparing()) { runner->QueueRequest( - std::make_shared(req->GetSenderUID())); + std::make_shared(runner->default_uid_)); } runner->QueueRequest(std::move(req)); diff --git a/src/server/runner.hh b/src/server/runner.hh index 76f67cc..8702a6a 100644 --- a/src/server/runner.hh +++ b/src/server/runner.hh @@ -51,6 +51,7 @@ class EXPORT_API Runner private: int sid_; unsigned int thread_num_; + uid_t default_uid_; std::unique_ptr server_; std::unique_ptr thread_pool_; }; -- 2.7.4