mirror of
https://github.com/openharmony/bundlemanager_app_domain_verify.git
synced 2026-07-01 22:34:03 -04:00
!220 merge master into master
add protect for multi thread
Created-by: woohoa
Commit-by: woohoa
Merged-by: openharmony_ci
Description: ### 一、内容说明(相关的Issue)
### 二、建议测试周期和提测地址
建议测试完成时间:xxxx.xx.xx
投产上线时间:xxxx.xx.xx
提测地址:CI环境/压测环境
测试账号:
### 三、变更内容
* 3.1 关联PR列表
* 3.2 数据库和部署说明
1. 常规更新
2. 重启unicorn
3. 重启sidekiq
4. 迁移任务:是否有迁移任务,没有写 "无"
5. rake脚本:`bundle exec xxx RAILS_ENV = production`;没有写 "无"
* 3.4 其他技术优化内容(做了什么,变更了什么)
- 重构了 xxxx 代码
- xxxx 算法优化
* 3.5 废弃通知(什么字段、方法弃用?)
* 3.6 后向不兼容变更(是否有无法向后兼容的变更?)
### 四、研发自测点(自测哪些?冒烟用例全部自测?)
自测测试结论:
### 五、测试关注点(需要提醒QA重点关注的、可能会忽略的地方)
检查点:
| 需求名称 | 是否影响xx公共模块 | 是否需要xx功能 | 需求升级是否依赖其他子产品 |
|------|------------|----------|---------------|
| xxx | 否 | 需要 | 不需要 |
| | | | |
接口测试:
性能测试:
并发测试:
其他:
See merge request: openharmony/bundlemanager_app_domain_verify!220
This commit is contained in:
@@ -48,11 +48,9 @@ private:
|
||||
|
||||
std::shared_ptr<AppDomainVerifyTaskMgr> AppDomainVerifyTaskMgr::GetInstance()
|
||||
{
|
||||
std::lock_guard<ffrt::mutex> lock(instanceMutex_);
|
||||
if (instance_ == nullptr) {
|
||||
std::lock_guard<ffrt::mutex> lock(instanceMutex_);
|
||||
if (instance_ == nullptr) {
|
||||
instance_ = std::make_shared<AppDomainVerifyTaskMgr>();
|
||||
}
|
||||
instance_ = std::make_shared<AppDomainVerifyTaskMgr>();
|
||||
}
|
||||
return instance_;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#include "app_domain_verify_mgr_client.h"
|
||||
#include "i_http_task.h"
|
||||
|
||||
#include <cpp/mutex.h>
|
||||
|
||||
namespace OHOS {
|
||||
namespace AppDomainVerify {
|
||||
using StatusHandleFunc = std::function<bool(std::string, int)>;
|
||||
@@ -56,6 +58,7 @@ private:
|
||||
virtual bool SaveDomainVerifyStatus(const std::string& bundleName, const VerifyResultInfo& verifyResultInfo);
|
||||
OHOS::AppDomainVerify::TaskType type_;
|
||||
AppVerifyBaseInfo appVerifyBaseInfo_;
|
||||
ffrt::mutex unVerifiedSetMutex_;
|
||||
std::unordered_set<std::string> unVerifiedSet_;
|
||||
VerifyResultInfo verifyResultInfo_;
|
||||
std::unordered_map<InnerVerifyStatus, StatusHandleFunc> staHandlerMap;
|
||||
|
||||
@@ -47,9 +47,12 @@ void VerifyTask::OnPostVerify(const std::string& uri, const OHOS::NetStack::Http
|
||||
"OnPostVerify status %{public}d appId:%{public}s, priority:%{public}d", status,
|
||||
appVerifyBaseInfo_.appIdentifier.c_str(), appVerifyBaseInfo_.priority);
|
||||
UpdateVerifyResultInfo(uri, status);
|
||||
unVerifiedSet_.erase(uri);
|
||||
if (unVerifiedSet_.empty()) {
|
||||
OnSaveVerifyResult();
|
||||
{
|
||||
std::unique_lock<ffrt::mutex> lock(unVerifiedSetMutex_);
|
||||
unVerifiedSet_.erase(uri);
|
||||
if (unVerifiedSet_.empty()) {
|
||||
OnSaveVerifyResult();
|
||||
}
|
||||
}
|
||||
VERIFY_RESULT_EVENT(appVerifyBaseInfo_.appIdentifier, appVerifyBaseInfo_.bundleName, type_, status);
|
||||
}
|
||||
@@ -80,6 +83,7 @@ const HostVerifyStatusMap& VerifyTask::GetUriVerifyMap()
|
||||
void VerifyTask::InitUriUnVerifySetMap(const VerifyResultInfo& verifyResultInfo)
|
||||
{
|
||||
APP_DOMAIN_VERIFY_HILOGD(APP_DOMAIN_VERIFY_AGENT_MODULE_SERVICE, "called");
|
||||
std::unique_lock<ffrt::mutex> lock(unVerifiedSetMutex_);
|
||||
for (const auto& hostVerifyStatusInfo : verifyResultInfo.hostVerifyStatusMap) {
|
||||
if (IsNeedRetry(hostVerifyStatusInfo.second)) {
|
||||
unVerifiedSet_.insert(hostVerifyStatusInfo.first);
|
||||
@@ -119,8 +123,13 @@ bool VerifyTask::SaveDomainVerifyStatus(const std::string& bundleName, const Ver
|
||||
|
||||
void VerifyTask::Execute()
|
||||
{
|
||||
std::unordered_set<std::string> unVerifiedSetTmp;
|
||||
{
|
||||
std::unique_lock<ffrt::mutex> lock(unVerifiedSetMutex_);
|
||||
unVerifiedSetTmp = unVerifiedSet_;
|
||||
}
|
||||
for (auto& hostVerifyStatusInfo : verifyResultInfo_.hostVerifyStatusMap) {
|
||||
if (unVerifiedSet_.count(hostVerifyStatusInfo.first) != 0) {
|
||||
if (unVerifiedSetTmp.count(hostVerifyStatusInfo.first) != 0) {
|
||||
auto verifyHttpTask = std::make_shared<VerifyHttpTask>(hostVerifyStatusInfo.first, shared_from_this());
|
||||
AppDomainVerifyTaskMgr::GetInstance()->AddTask(verifyHttpTask);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user