From 6f65b7717d5f11f815163eb159a7ea82998b40c0 Mon Sep 17 00:00:00 2001 From: wTong6 Date: Wed, 12 Mar 2025 14:19:22 +0800 Subject: [PATCH] fix:schema Signed-off-by: wTong6 --- .../framework/include/cloud/cloud_event.h | 1 + .../service/cloud/cloud_service_impl.cpp | 4 ++-- .../service/cloud/sync_manager.cpp | 2 +- .../service/kvdb/kvdb_service_impl.cpp | 2 +- .../service/rdb/rdb_service_impl.cpp | 11 +++++++---- .../service/rdb/rdb_service_impl.h | 2 +- .../service/test/cloud_data_test.cpp | 18 +++++++++--------- 7 files changed, 22 insertions(+), 18 deletions(-) diff --git a/services/distributeddataservice/framework/include/cloud/cloud_event.h b/services/distributeddataservice/framework/include/cloud/cloud_event.h index 7c3474709..a7b6ce8df 100644 --- a/services/distributeddataservice/framework/include/cloud/cloud_event.h +++ b/services/distributeddataservice/framework/include/cloud/cloud_event.h @@ -40,6 +40,7 @@ public: UNLOCK_CLOUD_CONTAINER, SET_SEARCH_TRIGGER, UPGRADE_SCHEMA, + GET_CLOUD_SCHEMA, CLOUD_BUTT }; diff --git a/services/distributeddataservice/service/cloud/cloud_service_impl.cpp b/services/distributeddataservice/service/cloud/cloud_service_impl.cpp index 249240166..9f91376d6 100644 --- a/services/distributeddataservice/service/cloud/cloud_service_impl.cpp +++ b/services/distributeddataservice/service/cloud/cloud_service_impl.cpp @@ -97,7 +97,7 @@ CloudServiceImpl::Factory::~Factory() {} CloudServiceImpl::CloudServiceImpl() { - EventCenter::GetInstance().Subscribe(CloudEvent::GET_SCHEMA, [this](const Event &event) { + EventCenter::GetInstance().Subscribe(CloudEvent::GET_CLOUD_SCHEMA, [this](const Event &event) { GetSchema(event); }); EventCenter::GetInstance().Subscribe(CloudEvent::CLOUD_SHARE, [this](const Event &event) { @@ -1035,7 +1035,7 @@ int32_t CloudServiceImpl::CloudStatic::OnAppInstall(const std::string &bundleNam auto ret = UpdateCloudInfoFromServer(user); if (ret == E_OK) { StoreInfo info{.bundleName = bundleName, .instanceId = index, .user = user}; - EventCenter::GetInstance().PostEvent(std::make_unique(CloudEvent::GET_SCHEMA, info)); + EventCenter::GetInstance().PostEvent(std::make_unique(CloudEvent::GET_CLOUD_SCHEMA, info)); } return ret; } diff --git a/services/distributeddataservice/service/cloud/sync_manager.cpp b/services/distributeddataservice/service/cloud/sync_manager.cpp index 139179622..3adb97d4f 100644 --- a/services/distributeddataservice/service/cloud/sync_manager.cpp +++ b/services/distributeddataservice/service/cloud/sync_manager.cpp @@ -556,7 +556,7 @@ void SyncManager::UpdateSchema(const SyncManager::SyncInfo &syncInfo) StoreInfo storeInfo; storeInfo.user = syncInfo.user_; storeInfo.bundleName = syncInfo.bundleName_; - EventCenter::GetInstance().PostEvent(std::make_unique(CloudEvent::GET_SCHEMA, storeInfo)); + EventCenter::GetInstance().PostEvent(std::make_unique(CloudEvent::GET_CLOUD_SCHEMA, storeInfo)); } std::map SyncManager::GetBindInfos(const StoreMetaData &meta, diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index f04980ccc..eb965a140 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -705,7 +705,7 @@ Status KVDBServiceImpl::BeforeCreate(const AppId &appId, const StoreId &storeId, storeInfo.instanceId = GetInstIndex(storeInfo.tokenId, appId); storeInfo.user = std::atoi(meta.user.c_str()); executors_->Execute([storeInfo]() { - auto event = std::make_unique(CloudEvent::GET_SCHEMA, storeInfo); + auto event = std::make_unique(CloudEvent::GET_CLOUD_SCHEMA, storeInfo); EventCenter::GetInstance().PostEvent(move(event)); }); } diff --git a/services/distributeddataservice/service/rdb/rdb_service_impl.cpp b/services/distributeddataservice/service/rdb/rdb_service_impl.cpp index 3f5663b0a..1d7e9e9e6 100644 --- a/services/distributeddataservice/service/rdb/rdb_service_impl.cpp +++ b/services/distributeddataservice/service/rdb/rdb_service_impl.cpp @@ -339,6 +339,9 @@ int32_t RdbServiceImpl::SetDistributedTables(const RdbSyncerParam ¶m, const localMeta.enableCloud = param.enableCloud_; MetaDataManager::GetInstance().SaveMeta(localMeta.GetKey(), localMeta, true); } + if (localMeta.enableCloud) { + GetSchema(param, CloudEvent::GET_CLOUD_SCHEMA); + } } std::vector relationships; for (const auto &reference : references) { @@ -861,7 +864,7 @@ int32_t RdbServiceImpl::AfterOpen(const RdbSyncerParam ¶m) } UpgradeCloneSecretKey(meta); } - GetSchema(param); + GetSchema(param, CloudEvent::GET_SCHEMA); return RDB_OK; } @@ -876,7 +879,7 @@ int32_t RdbServiceImpl::ReportStatistic(const RdbSyncerParam& param, const RdbSt return RDB_OK; } -void RdbServiceImpl::GetSchema(const RdbSyncerParam ¶m) +void RdbServiceImpl::GetSchema(const RdbSyncerParam ¶m, int32_t evtId) { if (executors_ != nullptr) { StoreInfo storeInfo; @@ -887,8 +890,8 @@ void RdbServiceImpl::GetSchema(const RdbSyncerParam ¶m) storeInfo.instanceId = instanceId; storeInfo.user = user; storeInfo.deviceId = DmAdapter::GetInstance().GetLocalDevice().uuid; - executors_->Execute([storeInfo]() { - auto event = std::make_unique(CloudEvent::GET_SCHEMA, std::move(storeInfo)); + executors_->Execute([storeInfo, evtId]() { + auto event = std::make_unique(evtId, std::move(storeInfo)); EventCenter::GetInstance().PostEvent(move(event)); return; }); diff --git a/services/distributeddataservice/service/rdb/rdb_service_impl.h b/services/distributeddataservice/service/rdb/rdb_service_impl.h index 3bda423c2..8fefde817 100644 --- a/services/distributeddataservice/service/rdb/rdb_service_impl.h +++ b/services/distributeddataservice/service/rdb/rdb_service_impl.h @@ -214,7 +214,7 @@ private: static bool GetDBPassword(const StoreMetaData &metaData, DistributedDB::CipherPassword &password); - void GetSchema(const RdbSyncerParam ¶m); + void GetSchema(const RdbSyncerParam ¶m, int32_t evtId); void SetReturnParam(StoreMetaData &metadata, RdbSyncerParam ¶m); diff --git a/services/distributeddataservice/service/test/cloud_data_test.cpp b/services/distributeddataservice/service/test/cloud_data_test.cpp index 107a81cf9..6a0d8b654 100644 --- a/services/distributeddataservice/service/test/cloud_data_test.cpp +++ b/services/distributeddataservice/service/test/cloud_data_test.cpp @@ -330,7 +330,7 @@ HWTEST_F(CloudDataTest, GetSchema, TestSize.Level0) SchemaMeta schemaMeta; ASSERT_FALSE(MetaDataManager::GetInstance().LoadMeta(cloudInfo.GetSchemaKey(TEST_CLOUD_BUNDLE), schemaMeta, true)); StoreInfo storeInfo{ OHOS::IPCSkeleton::GetCallingTokenID(), TEST_CLOUD_BUNDLE, TEST_CLOUD_STORE, 0 }; - auto event = std::make_unique(CloudEvent::GET_SCHEMA, storeInfo); + auto event = std::make_unique(CloudEvent::GET_CLOUD_SCHEMA, storeInfo); EventCenter::GetInstance().PostEvent(std::move(event)); auto ret = MetaDataManager::GetInstance().LoadMeta(cloudInfo.GetSchemaKey(TEST_CLOUD_BUNDLE), schemaMeta, true); ASSERT_TRUE(ret); @@ -580,7 +580,7 @@ HWTEST_F(CloudDataTest, QueryLastSyncInfo007, TestSize.Level0) lastSyncInfo.syncStatus = 1; MetaDataManager::GetInstance().SaveMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_1), lastSyncInfo, true); - + std::vector lastSyncInfos; MetaDataManager::GetInstance().LoadMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_1), lastSyncInfos, true); @@ -626,7 +626,7 @@ HWTEST_F(CloudDataTest, QueryLastSyncInfo008, TestSize.Level0) lastSyncInfo1.code = 0; MetaDataManager::GetInstance().SaveMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_2), lastSyncInfo1, true); - + std::vector lastSyncInfos; MetaDataManager::GetInstance().LoadMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, ""), lastSyncInfos, true); @@ -679,7 +679,7 @@ HWTEST_F(CloudDataTest, QueryLastSyncInfo009, TestSize.Level0) lastSyncInfo1.code = 0; MetaDataManager::GetInstance().SaveMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_2), lastSyncInfo1, true); - + std::vector lastSyncInfos; MetaDataManager::GetInstance().LoadMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, ""), lastSyncInfos, true); @@ -725,7 +725,7 @@ HWTEST_F(CloudDataTest, QueryLastSyncInfo010, TestSize.Level0) lastSyncInfo1.code = 0; MetaDataManager::GetInstance().SaveMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_2), lastSyncInfo1, true); - + CloudData::SyncManager sync; CloudData::SyncManager::SyncInfo info(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_1); auto [status, result] = sync.QueryLastSyncInfo({ { user, TEST_CLOUD_ID, TEST_CLOUD_BUNDLE, "1234"} }); @@ -785,7 +785,7 @@ HWTEST_F(CloudDataTest, QueryLastSyncInfo012, TestSize.Level0) lastSyncInfo.syncStatus = 1; MetaDataManager::GetInstance().SaveMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_1), lastSyncInfo, true); - + std::vector lastSyncInfos; MetaDataManager::GetInstance().LoadMeta(CloudLastSyncInfo::GetKey(user, TEST_CLOUD_BUNDLE, TEST_CLOUD_DATABASE_ALIAS_1), lastSyncInfos, true); @@ -2593,7 +2593,7 @@ HWTEST_F(CloudDataTest, UpdateClearWaterMark001, TestSize.Level0) SchemaMeta schemaMeta; schemaMeta.version = 1; schemaMeta.databases.push_back(database); - + SchemaMeta::Database database1; database1.name = TEST_CLOUD_STORE_1; database1.version = 2; @@ -2629,7 +2629,7 @@ HWTEST_F(CloudDataTest, UpdateClearWaterMark002, TestSize.Level0) SchemaMeta schemaMeta; schemaMeta.version = 1; schemaMeta.databases.push_back(database); - + SchemaMeta::Database database1; database1.name = TEST_CLOUD_STORE; database1.version = 1; @@ -2665,7 +2665,7 @@ HWTEST_F(CloudDataTest, UpdateClearWaterMark003, TestSize.Level0) SchemaMeta schemaMeta; schemaMeta.version = 1; schemaMeta.databases.push_back(database); - + SchemaMeta::Database database1; database1.name = TEST_CLOUD_STORE; database1.version = 2; -- Gitee