diff --git a/frameworks/app_details_rdb/src/app_details_rdb_data_manager.cpp b/frameworks/app_details_rdb/src/app_details_rdb_data_manager.cpp index bb26cb9..5b19a2b 100644 --- a/frameworks/app_details_rdb/src/app_details_rdb_data_manager.cpp +++ b/frameworks/app_details_rdb/src/app_details_rdb_data_manager.cpp @@ -83,13 +83,14 @@ bool AppDetailsRdbDataMgr::ExecWithTrans(TransCallback cb) } bool AppDetailsRdbDataMgr::QueryDataByDomain( - const std::string& tableName, const std::string &domain, std::vector &itemVec) + const std::string& tableName, const std::string& domain, std::vector& itemVec) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "call."); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] QueryDataByDomain."); NativeRdb::AbsRdbPredicates absRdbPred(tableName); absRdbPred.EqualTo(DETAILS_DOMAIN, domain); std::vector columns = {}; - RdbForEachRetCb eachCb = [&itemVec](std::shared_ptr retSet)->bool { + RdbForEachRetCb eachCb = [&itemVec](std::shared_ptr retSet) -> bool { AppDetailsRdbItem item; if (!item.GetRdbItem(retSet)) { return false; @@ -129,6 +130,7 @@ void AppDetailsRdbDataMgr::PostDelayCloseTask(int32_t delayTime) bool AppDetailsRdbDataMgr::InsertDataBatch(const std::string& tableName, std::vector& infoVec) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] InsertDataBatch."); auto rdbStore = GetRdbStore(); if (!rdbStore) { APP_DOMAIN_VERIFY_HILOGE(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "get rdbStore fail."); @@ -169,9 +171,10 @@ bool AppDetailsRdbDataMgr::CreateMetaData() return true; }; -bool AppDetailsRdbDataMgr::UpdateMetaData(std::vector &itemVec) +bool AppDetailsRdbDataMgr::UpdateMetaData(std::vector& itemVec) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] UpdateMetaData."); auto rdbStore = GetRdbStore(); if (!rdbStore) { APP_DOMAIN_VERIFY_HILOGE(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "get rdbStore fail."); @@ -191,9 +194,10 @@ bool AppDetailsRdbDataMgr::UpdateMetaData(std::vector &itemVec) return true; }; -bool AppDetailsRdbDataMgr::QueryMetaData(const std::string &tableName, MetaItem &info) +bool AppDetailsRdbDataMgr::QueryMetaData(const std::string& tableName, MetaItem& info) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "call."); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] QueryMetaData."); NativeRdb::AbsRdbPredicates absRdbPred(META_DATA); absRdbPred.EqualTo(META_TABLE_NAME, tableName); std::vector columns = {}; @@ -203,7 +207,7 @@ bool AppDetailsRdbDataMgr::QueryMetaData(const std::string &tableName, MetaItem return false; } std::vector itemVec; - RdbForEachRetCb eachCb = [&itemVec](std::shared_ptr retSet)->bool { + RdbForEachRetCb eachCb = [&itemVec](std::shared_ptr retSet) -> bool { MetaItem item; if (!item.GetRdbItem(retSet)) { return false; @@ -218,7 +222,7 @@ bool AppDetailsRdbDataMgr::QueryMetaData(const std::string &tableName, MetaItem return false; }; -bool AppDetailsRdbDataMgr::CreateTable(const std::string &tableName) +bool AppDetailsRdbDataMgr::CreateTable(const std::string& tableName) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); std::string sql = "CREATE TABLE IF NOT EXISTS " + tableName @@ -262,7 +266,7 @@ bool AppDetailsRdbDataMgr::CreateRegularIndex(const std::string& tableName, cons return true; }; -bool AppDetailsRdbDataMgr::DeleteTable(const std::string &tableName) +bool AppDetailsRdbDataMgr::DeleteTable(const std::string& tableName) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "Called"); std::string sql = "DROP TABLE IF EXISTS " + tableName + ";"; @@ -295,7 +299,7 @@ std::string AppDetailsRdbDataMgr::GetDbVersion() return ""; }; -bool AppDetailsRdbDataMgr::RenameTable(const std::string &oldName, const std::string &newName) +bool AppDetailsRdbDataMgr::RenameTable(const std::string& oldName, const std::string& newName) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); std::string sql = "ALTER TABLE " + oldName + " RENAME TO " + newName + ";"; @@ -349,6 +353,7 @@ bool AppDetailsRdbDataMgr::Query(const NativeRdb::AbsRdbPredicates& predicates, const std::vector& columns, RdbForEachRetCb cb) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] Query."); auto rdbStore = GetRdbStore(); if (!rdbStore) { APP_DOMAIN_VERIFY_HILOGE(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "rdb store is null"); @@ -359,10 +364,8 @@ bool AppDetailsRdbDataMgr::Query(const NativeRdb::AbsRdbPredicates& predicates, APP_DOMAIN_VERIFY_HILOGE(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "rdbStore query absSharedResultSet failed"); return false; } - auto guard = std::unique_ptr>(nullptr, - [&](void*) { - absSharedResultSet->Close(); - }); + auto guard = std::unique_ptr>( + nullptr, [&](void*) { absSharedResultSet->Close(); }); if (!absSharedResultSet->HasBlock()) { APP_DOMAIN_VERIFY_HILOGE(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "absSharedResultSet has no block"); return false; diff --git a/frameworks/common/include/utils/lru_cache_util.h b/frameworks/common/include/utils/lru_cache_util.h index 7ce4262..68114f1 100644 --- a/frameworks/common/include/utils/lru_cache_util.h +++ b/frameworks/common/include/utils/lru_cache_util.h @@ -38,6 +38,7 @@ private: std::atomic maxCap_ = 10; std::list> cache_; std::unordered_map>::iterator> lruMap_; + std::mutex mutex_; }; template @@ -49,6 +50,7 @@ bool LruCacheUtil::SetMaxCap(size_t cap) template bool LruCacheUtil::Get(const K& key, V& value) { + std::lock_guard lock(mutex_); if (lruMap_.find(key) == lruMap_.end()) { return false; } @@ -62,6 +64,7 @@ bool LruCacheUtil::Get(const K& key, V& value) template void LruCacheUtil::Put(const K& key, const V& value) { + std::lock_guard lock(mutex_); auto iter = lruMap_.find(key); if (iter != lruMap_.end()) { V val = lruMap_[key]->second; @@ -82,6 +85,7 @@ void LruCacheUtil::Put(const K& key, const V& value) template void LruCacheUtil::Clear() { + std::lock_guard lock(mutex_); cache_.clear(); lruMap_.clear(); }; @@ -89,6 +93,7 @@ void LruCacheUtil::Clear() template bool LruCacheUtil::IsEmpty() { + std::lock_guard lock(mutex_); return lruMap_.empty(); }; } diff --git a/frameworks/common/src/config/white_list_config_mgr.cpp b/frameworks/common/src/config/white_list_config_mgr.cpp index 5e4f0e3..7f64445 100644 --- a/frameworks/common/src/config/white_list_config_mgr.cpp +++ b/frameworks/common/src/config/white_list_config_mgr.cpp @@ -39,6 +39,8 @@ WhiteListConfigMgr::~WhiteListConfigMgr() } void WhiteListConfigMgr::LoadDefault() { + APP_DOMAIN_VERIFY_HILOGI( + APP_DOMAIN_VERIFY_MODULE_COMMON, "[AppDomainVerifyIO] operation:read default whitelist"); preferences_ = GetPreference(DEFAULT_WHITE_LIST_PRE_PATH); if (preferences_ == nullptr) { UNIVERSAL_ERROR_EVENT(READ_DEFAULT_WHITE_LIST_FAULT); @@ -54,6 +56,8 @@ void WhiteListConfigMgr::LoadDefault() } void WhiteListConfigMgr::LoadDynamic() { + APP_DOMAIN_VERIFY_HILOGI( + APP_DOMAIN_VERIFY_MODULE_COMMON, "[AppDomainVerifyIO] operation:read dynamic whitelist"); preferences_ = GetPreference(DYNAMIC_WHITE_LIST_PRE_PATH); if (preferences_ == nullptr) { UNIVERSAL_ERROR_EVENT(READ_DYNAMIC_WHITE_LIST_FAULT); @@ -107,6 +111,8 @@ std::shared_ptr WhiteListConfigMgr::GetPreferenc } bool WhiteListConfigMgr::Save() { + APP_DOMAIN_VERIFY_HILOGI( + APP_DOMAIN_VERIFY_MODULE_COMMON, "[AppDomainVerifyIO] operation:write dynamic whitelist"); APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MODULE_COMMON, "called"); if (preferences_ == nullptr) { APP_DOMAIN_VERIFY_HILOGW(APP_DOMAIN_VERIFY_MODULE_COMMON, "preferences null"); diff --git a/services/include/manager/core/app_details_data_mgr.h b/services/include/manager/core/app_details_data_mgr.h index 1bfbf7a..6bd0aaa 100644 --- a/services/include/manager/core/app_details_data_mgr.h +++ b/services/include/manager/core/app_details_data_mgr.h @@ -37,6 +37,7 @@ public: AppDetailsDataMgr(); virtual ~AppDetailsDataMgr(); int QueryAppDetailsWant(const std::string& url, AAFwk::Want& want, std::string& bundleName); + private: bool QueryAppDetailsWantByCache(const std::string& url, std::string& bundleName); bool QueryAppDetailsWantByRdb(const std::string& url, std::string& bundleName); @@ -44,8 +45,9 @@ private: std::shared_ptr> lruCache_; std::shared_ptr rdbMgr_; std::shared_ptr detailsFilter_; - int64_t cacheBeginTime_ = 0; - std::mutex agWantUrlMutex; + int64_t cacheBeginTime_{0}; + std::mutex cacheMutex_; + std::mutex agWantUrlMutex_; std::string agWantUrl_; }; } // namespace AppDomainVerify diff --git a/services/src/manager/core/app_details_data_mgr.cpp b/services/src/manager/core/app_details_data_mgr.cpp index c63d684..55f094b 100644 --- a/services/src/manager/core/app_details_data_mgr.cpp +++ b/services/src/manager/core/app_details_data_mgr.cpp @@ -41,7 +41,7 @@ AppDetailsDataMgr::AppDetailsDataMgr() rdbMgr_ = std::make_shared(false); }; -AppDetailsDataMgr::~AppDetailsDataMgr(){}; +AppDetailsDataMgr::~AppDetailsDataMgr() {}; int AppDetailsDataMgr::QueryAppDetailsWant(const std::string& url, AAFwk::Want& want, std::string& bundleName) { @@ -68,15 +68,18 @@ bool AppDetailsDataMgr::QueryAppDetailsWantByCache(const std::string& url, std:: { int64_t currTime = std::chrono::time_point_cast(std::chrono::system_clock::now()).time_since_epoch().count(); - if (currTime - cacheBeginTime_ > CACHE_TIME_S) { - cacheBeginTime_ = currTime; - lruCache_->Clear(); - return false; - } - std::string value; - if (lruCache_->Get(url, value)) { - bundleName = value; - return true; + { + std::lock_guard lock(cacheMutex_); + if (currTime - cacheBeginTime_ > CACHE_TIME_S) { + cacheBeginTime_ = currTime; + lruCache_->Clear(); + return false; + } + std::string value; + if (lruCache_->Get(url, value)) { + bundleName = value; + return true; + } } return false; }; @@ -118,7 +121,7 @@ bool AppDetailsDataMgr::QueryAppDetailsWantByRdb(const std::string& url, std::st void AppDetailsDataMgr::AddInfoToWant(AAFwk::Want& want, const std::string& bundleName) { { - std::lock_guard lock(agWantUrlMutex); + std::lock_guard lock(agWantUrlMutex_); if (agWantUrl_.empty()) { MetaItem info; rdbMgr_->QueryMetaData(APP_DETAILS_TABLE, info); diff --git a/services/src/manager/rdb/app_domain_verify_rdb_data_manager.cpp b/services/src/manager/rdb/app_domain_verify_rdb_data_manager.cpp index f3d198d..1388f64 100644 --- a/services/src/manager/rdb/app_domain_verify_rdb_data_manager.cpp +++ b/services/src/manager/rdb/app_domain_verify_rdb_data_manager.cpp @@ -64,6 +64,7 @@ AppDomainVerifyRdbDataManager::~AppDomainVerifyRdbDataManager() bool AppDomainVerifyRdbDataManager::InsertData(const RdbDataItem& rdbDataItem) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] InsertData."); auto rdbStore = GetRdbStore(); if (!CheckRdbStoreExist(rdbStore)) { return false; @@ -108,6 +109,7 @@ bool AppDomainVerifyRdbDataManager::Query(const NativeRdb::AbsRdbPredicates& pre if (!CheckRdbStoreExist(rdbStore)) { return false; } + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] Query."); auto absSharedResultSet = rdbStore->Query(predicates, columns); if (absSharedResultSet == nullptr) { APP_DOMAIN_VERIFY_HILOGE(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "rdbStore query absSharedResultSet failed"); @@ -142,6 +144,7 @@ bool AppDomainVerifyRdbDataManager::Query(const NativeRdb::AbsRdbPredicates& pre bool AppDomainVerifyRdbDataManager::DeleteData(const std::string& bundleName) { APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "called"); + APP_DOMAIN_VERIFY_HILOGI(APP_DOMAIN_VERIFY_MGR_MODULE_SERVICE, "[AppDomainVerifyIO] DeleteData."); auto rdbStore = GetRdbStore(); if (!CheckRdbStoreExist(rdbStore)) { return false;