From 004c03403dd712e3d9c28a93f612ca8eddc9ff9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E5=AD=90=E6=9D=8E?= Date: Tue, 8 Apr 2025 18:14:55 +0800 Subject: [PATCH] fix bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 木子李 --- .../service/udmf/lifecycle/lifecycle_policy.cpp | 4 ++-- .../service/udmf/preprocess/data_handler.cpp | 4 ++-- .../service/udmf/store/runtime_store.cpp | 8 ++++---- .../service/udmf/udmf_service_impl.cpp | 15 ++++++++------- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/services/distributeddataservice/service/udmf/lifecycle/lifecycle_policy.cpp b/services/distributeddataservice/service/udmf/lifecycle/lifecycle_policy.cpp index cc3d88659..095a95f65 100644 --- a/services/distributeddataservice/service/udmf/lifecycle/lifecycle_policy.cpp +++ b/services/distributeddataservice/service/udmf/lifecycle/lifecycle_policy.cpp @@ -30,7 +30,7 @@ Status LifeCyclePolicy::OnGot(const UnifiedKey &key) ZLOGE("Get store failed:%{public}s", key.intention.c_str()); return E_DB_ERROR; } - if (store->Delete(key.key) != E_OK) { + if (store->Delete(UnifiedKey(key.key).GetKeyCommonPrefix()) != E_OK) { ZLOGE("Remove data failed:%{public}s", key.intention.c_str()); return E_DB_ERROR; } @@ -92,7 +92,7 @@ Status LifeCyclePolicy::GetTimeoutKeys( } if (curTime > data.GetRuntime()->createTime + duration_cast(interval).count() || curTime < data.GetRuntime()->createTime) { - timeoutKeys.push_back(data.GetRuntime()->key.key); + timeoutKeys.push_back(UnifiedKey(data.GetRuntime()->key.key).GetKeyCommonPrefix()); } } return E_OK; diff --git a/services/distributeddataservice/service/udmf/preprocess/data_handler.cpp b/services/distributeddataservice/service/udmf/preprocess/data_handler.cpp index d772d9998..74c7d856a 100644 --- a/services/distributeddataservice/service/udmf/preprocess/data_handler.cpp +++ b/services/distributeddataservice/service/udmf/preprocess/data_handler.cpp @@ -35,7 +35,7 @@ Status DataHandler::MarshalToEntries(const UnifiedData &unifiedData, std::vector std::vector udKeyBytes = { unifiedKey.begin(), unifiedKey.end() }; Entry entry = { udKeyBytes, runtimeBytes }; entries.emplace_back(entry); - std::string propsKey = unifiedData.GetRuntime()->key.GetPropertyKey() + UD_KEY_PROPERTIES_SEPARATOR; + std::string propsKey = unifiedData.GetRuntime()->key.GetKeyCommonPrefix() + UD_KEY_PROPERTIES_SEPARATOR; std::vector propsBytes; auto propsTlv = TLVObject(propsBytes); if (!TLVUtil::Writing(*unifiedData.GetProperties(), propsTlv, TAG::TAG_PROPERTIES)) { @@ -86,7 +86,7 @@ Status DataHandler::UnmarshalEntryItem(UnifiedData &unifiedData, const std::vect continue; } auto isStartWithKey = keyStr.find(key) == 0; - std::string propsKey = UnifiedKey(key).GetPropertyKey() + UD_KEY_PROPERTIES_SEPARATOR; + std::string propsKey = UnifiedKey(key).GetKeyCommonPrefix() + UD_KEY_PROPERTIES_SEPARATOR; if (!isStartWithKey && (keyStr == propsKey)) { std::shared_ptr properties; if (!TLVUtil::ReadTlv(properties, data, TAG::TAG_PROPERTIES)) { diff --git a/services/distributeddataservice/service/udmf/store/runtime_store.cpp b/services/distributeddataservice/service/udmf/store/runtime_store.cpp index 764c43230..da14366c4 100644 --- a/services/distributeddataservice/service/udmf/store/runtime_store.cpp +++ b/services/distributeddataservice/service/udmf/store/runtime_store.cpp @@ -113,7 +113,7 @@ Status RuntimeStore::Get(const std::string &key, UnifiedData &unifiedData) { UpdateTime(); std::vector entries; - if (GetEntries(UnifiedKey(key).GetPropertyKey(), entries) != E_OK) { + if (GetEntries(UnifiedKey(key).GetKeyCommonPrefix(), entries) != E_OK) { ZLOGE("GetEntries failed, dataPrefix: %{public}s.", key.c_str()); return E_DB_ERROR; } @@ -135,7 +135,7 @@ Status RuntimeStore::PutSummary(const UnifiedData &data, std::vector &ent UnifiedDataHelper::GetSummary(data, summary); } - auto propertyKey = data.GetRuntime()->key.GetPropertyKey(); + auto propertyKey = data.GetRuntime()->key.GetKeyCommonPrefix(); Value value; auto status = DataHandler::MarshalToEntries(summary, value, TAG::TAG_SUMMARY); if (status != E_OK) { @@ -151,7 +151,7 @@ Status RuntimeStore::GetSummary(UnifiedKey &key, Summary &summary) { UpdateTime(); Value value; - auto summaryKey = key.GetPropertyKey() + SUMMARY_SUFIX; + auto summaryKey = key.GetKeyCommonPrefix() + SUMMARY_SUFIX; auto res = kvStore_->Get({summaryKey.begin(), summaryKey.end()}, value); if (res != OK || value.empty()) { ZLOGW("Get stored summary failed, key: %{public}s, status:%{public}d", summaryKey.c_str(), res); @@ -213,7 +213,7 @@ Status RuntimeStore::GetRuntime(const std::string &key, Runtime &runtime) Status RuntimeStore::Update(const UnifiedData &unifiedData) { std::string key = unifiedData.GetRuntime()->key.key; - if (Delete(key) != E_OK) { + if (Delete(UnifiedKey(key).GetKeyCommonPrefix()) != E_OK) { UpdateTime(); ZLOGE("Delete unified data failed, dataPrefix: %{public}s.", key.c_str()); return E_DB_ERROR; diff --git a/services/distributeddataservice/service/udmf/udmf_service_impl.cpp b/services/distributeddataservice/service/udmf/udmf_service_impl.cpp index 966cda233..6e89f011b 100644 --- a/services/distributeddataservice/service/udmf/udmf_service_impl.cpp +++ b/services/distributeddataservice/service/udmf/udmf_service_impl.cpp @@ -437,7 +437,7 @@ int32_t UdmfServiceImpl::DeleteData(const QueryOption &query, std::vectortokenId == query.tokenId) { unifiedDataSet.push_back(data); - deleteKeys.push_back(runtime->key.key); + deleteKeys.push_back(UnifiedKey(runtime->key.key).GetKeyCommonPrefix()); } } if (deleteKeys.empty()) { @@ -705,15 +705,16 @@ int32_t UdmfServiceImpl::QueryDataCommon( { auto find = UD_INTENTION_MAP.find(query.intention); std::string intention = find == UD_INTENTION_MAP.end() ? intention : find->second; - if (!UnifiedDataUtils::IsValidOptions(query.key, intention)) { + UnifiedKey key(query.key); + if (!UnifiedDataUtils::IsValidOptions(key, intention, UD_INTENTION_MAP.at(UD_INTENTION_DATA_HUB))) { ZLOGE("Unified key: %{public}s and intention: %{public}s is invalid.", query.key.c_str(), intention.c_str()); return E_INVALID_PARAMETERS; } - std::string dataPrefix = DATA_PREFIX + intention; - UnifiedKey key(query.key); - key.IsValid(); - if (intention.empty()) { - dataPrefix = UnifiedKey(key.key).GetPropertyKey(); + std::string dataPrefix; + if (key.key.empty()) { + dataPrefix = DATA_PREFIX + intention; + } else { + dataPrefix = UnifiedKey(key.key).GetKeyCommonPrefix(); intention = key.intention; } ZLOGD("dataPrefix = %{public}s, intention: %{public}s.", dataPrefix.c_str(), intention.c_str()); -- Gitee