diff --git a/services/distributeddataservice/framework/include/cloud/cloud_event.h b/services/distributeddataservice/framework/include/cloud/cloud_event.h index 7c347470981f5e540afddcab8f10363df5420e20..a7b6ce8dfc7274b29cb4fd8d118f00c931e10fbf 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 2492401664a18bf3233d35bc14309e7836d8da30..9f91376d6f25a244c688c8963f3c4ffa43016f50 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 1391796224bf894a550a943e687400803348fb65..3adb97d4fdfd8847488f96fd5389533191316fee 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 f04980ccc167301f48916a6a907e72f745330e5e..eb965a140ccc0ff4ac460e0cd593ee04f2bec8c9 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 3f5663b0ad4ccd1cd8956ecde82fd93daa4646f7..1d7e9e9e6277281a68faf93219b532fdb335d84d 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 3bda423c26fa99c91ddce01b83c61bb83e22b2b2..8fefde817ae4fd2c8cc09fff2d28e64d84dc49ec 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 107a81cf98362b96e6094e54c123be676757e33c..6a0d8b654fd10f387a7ed2a890627fdf13abf230 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;