From a665899979af5b32c29fe6dbacff98a6cd3b6e6d Mon Sep 17 00:00:00 2001 From: q30043944 Date: Tue, 2 Sep 2025 11:47:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9initdevicemanager=20failed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: q30043944 --- .../native_cpp/src/ipc/standard/ipc_client_manager.cpp | 5 +++++ utils/include/kvadapter/kv_adapter.h | 1 + utils/src/kvadapter/kv_adapter.cpp | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp b/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp index db37b19cb..b175e930c 100644 --- a/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp +++ b/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp @@ -68,6 +68,11 @@ int32_t IpcClientManager::ClientInit() if (!object->AddDeathRecipient(dmRecipient_)) { LOGE("InitDeviceManagerService: AddDeathRecipient Failed"); } + if (!object->IsProxyObject()) { + LOGI("object is not proxy object."); + dmInterface_ = sptr(new IpcClientServerProxy(object)); + return DM_OK; + } dmInterface_ = iface_cast(object); LOGI("Completed"); return DM_OK; diff --git a/utils/include/kvadapter/kv_adapter.h b/utils/include/kvadapter/kv_adapter.h index b6b22f8d3..e59c76fd0 100644 --- a/utils/include/kvadapter/kv_adapter.h +++ b/utils/include/kvadapter/kv_adapter.h @@ -60,6 +60,7 @@ private: DistributedKv::DataType dataType_ = DistributedKv::DataType::TYPE_STATICS; std::shared_ptr kvStorePtr_ = nullptr; std::mutex kvAdapterMutex_; + std::mutex kvDataMgrMutex_; std::atomic isInited_ = false; }; } // namespace DistributedHardware diff --git a/utils/src/kvadapter/kv_adapter.cpp b/utils/src/kvadapter/kv_adapter.cpp index 15b5c226a..2afa4dfd7 100644 --- a/utils/src/kvadapter/kv_adapter.cpp +++ b/utils/src/kvadapter/kv_adapter.cpp @@ -161,6 +161,7 @@ DistributedKv::Status KVAdapter::GetLocalKvStorePtr() .kvStoreType = DistributedKv::KvStoreType::SINGLE_VERSION, .baseDir = DATABASE_DIR }; + std::lock_guard lock(kvDataMgrMutex_); DistributedKv::Status status = kvDataMgr_.GetSingleKvStore(options, appId_, storeId_, kvStorePtr_); return status; } @@ -168,18 +169,21 @@ DistributedKv::Status KVAdapter::GetLocalKvStorePtr() void KVAdapter::RegisterKvStoreDeathListener() { LOGI("Register syncCompleted listener"); + std::lock_guard lock(kvDataMgrMutex_); kvDataMgr_.RegisterKvStoreServiceDeathRecipient(shared_from_this()); } void KVAdapter::UnregisterKvStoreDeathListener() { LOGI("UnRegister death listener"); + std::lock_guard lock(kvDataMgrMutex_); kvDataMgr_.UnRegisterKvStoreServiceDeathRecipient(shared_from_this()); } int32_t KVAdapter::DeleteKvStore() { LOGI("Delete KvStore!"); + std::lock_guard lock(kvDataMgrMutex_); kvDataMgr_.CloseKvStore(appId_, storeId_); kvDataMgr_.DeleteKvStore(appId_, storeId_, DATABASE_DIR); return DM_OK; -- Gitee