From c0e0a363d3d1a11cf31213eb5d16d8101462250c Mon Sep 17 00:00:00 2001 From: xiongchangwu Date: Thu, 22 Aug 2024 21:55:46 +0800 Subject: [PATCH 1/2] addsa retry Signed-off-by: xiongchangwu --- adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp | 26 +++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp b/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp index 1b3091451..d112a21be 100644 --- a/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp +++ b/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp @@ -294,12 +294,12 @@ int HdfRemoteAdapterAddSa(int32_t saId, struct HdfRemoteService *service) if (service == nullptr) { return HDF_ERR_INVALID_PARAM; } + + const int32_t waitTimes = 50; + const int32_t sleepInterval = 20000; OHOS::sptr saManager; { - saManager = OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - const int32_t waitTimes = 50; - const int32_t sleepInterval = 20000; - for (uint32_t cnt = 1; cnt <= waitTimes; ++cnt) { + for (uint32_t cnt = 0; cnt < waitTimes; ++cnt) { HDF_LOGI("waiting for samgr... %{public}d", cnt); saManager = OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); if (saManager != nullptr) { @@ -321,9 +321,23 @@ int HdfRemoteAdapterAddSa(int32_t saId, struct HdfRemoteService *service) OHOS::IPCObjectStub *stub = reinterpret_cast(remote.GetRefPtr()); stub->SetRequestSidFlag(true); #endif - int ret = saManager->AddSystemAbility(saId, holder->remote_); + int ret = HDF_FAILURE; + for (uint32_t cnt = 0; cnt < waitTimes; ++cnt) { + HDF_LOGI("waiting for addSa... %{public}d", cnt); + ret = saManager->AddSystemAbility(saId, holder->remote_); + if (ret == HDF_SUCCESS) { + HDF_LOGI("addsa %{public}d, success", saId); + break; + } + HDF_LOGI("AddSystemAbility failed, retry"); + usleep(sleepInterval); + } + if (ret != HDF_SUCCESS) { + HDF_LOGE("failed to addSa, waiting timeout"); + return ret; + } + (void)OHOS::IPCSkeleton::GetInstance().SetMaxWorkThreadNum(g_remoteThreadMax++); - HDF_LOGI("add sa %{public}d, ret = %{public}s", saId, (ret == 0) ? "succ" : "fail"); } return HDF_SUCCESS; } -- Gitee From 7a0372d0eb92a100ac396908d7def09c04d836b3 Mon Sep 17 00:00:00 2001 From: xiongchangwu Date: Fri, 23 Aug 2024 15:05:02 +0800 Subject: [PATCH 2/2] modify addSa test Signed-off-by: xiongchangwu --- .../manager/test/unittest/common/hdf_remote_adapter_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/core/manager/test/unittest/common/hdf_remote_adapter_test.cpp b/framework/core/manager/test/unittest/common/hdf_remote_adapter_test.cpp index 835598145..8fa4436c5 100644 --- a/framework/core/manager/test/unittest/common/hdf_remote_adapter_test.cpp +++ b/framework/core/manager/test/unittest/common/hdf_remote_adapter_test.cpp @@ -67,7 +67,7 @@ HWTEST_F(HdfRemoteAdapterTest, HdfRemoteAdapterTest002, TestSize.Level1) ret = HdfRemoteAdapterAddService(serviceName, remoteService); ASSERT_TRUE(ret != HDF_SUCCESS); ret = HdfRemoteAdapterAddSa(-1, remoteService); - ASSERT_TRUE(ret == HDF_SUCCESS); + ASSERT_TRUE(ret != HDF_SUCCESS); HdfRemoteService *remote = HdfRemoteAdapterGetService(NULL); ASSERT_EQ(remote, nullptr); -- Gitee