aboutsummaryrefslogtreecommitdiff
path: root/zenserver
diff options
context:
space:
mode:
Diffstat (limited to 'zenserver')
-rw-r--r--zenserver/projectstore.cpp46
1 files changed, 26 insertions, 20 deletions
diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp
index 280e5ab07..95fb2d3f8 100644
--- a/zenserver/projectstore.cpp
+++ b/zenserver/projectstore.cpp
@@ -572,8 +572,15 @@ ProjectStore::Oplog::AddDerivedDataMapping(const RwLock::ExclusiveLockScope&,
if (Id == ValueId)
{
Cid = ValueObj["RawHash"sv].AsHash();
+ break;
}
}
+
+ if (Cid == IoHash::Zero)
+ {
+ // Failed to map Value id to content ID
+ return false;
+ }
}
}
@@ -613,26 +620,6 @@ ProjectStore::Oplog::RegisterOplogEntry(CbObject Core, const OplogEntry& OpEntry
if (PkgObj["meta"])
{
CbObjectView MetaObj = PkgObj["meta"sv].AsObjectView();
-
- for (CbFieldView& Entry : MetaObj["deriveddata"sv])
- {
- CbObjectView DerivedDataObj = Entry.AsObjectView();
- std::string_view Namespace = DerivedDataObj["namespace"sv].AsString(std::string_view("ue.ddc"));
- CbObjectView CacheKey = DerivedDataObj["cachekey"sv].AsObjectView();
- std::string_view Bucket = CacheKey["Bucket"sv].AsString();
- const IoHash Hash = CacheKey["Hash"sv].AsHash();
- const Oid ValueId = DerivedDataObj["valueid"sv].AsObjectId();
- const Oid ChunkId = DerivedDataObj["chunkid"sv].AsObjectId();
-
- if (AddDerivedDataMapping(OplogLock, Namespace, Bucket, Hash, ValueId, ChunkId))
- {
- ZEN_DEBUG("derived data {} -> '{}/{}/{}'", ChunkId, Namespace, Bucket, Hash);
- }
- else
- {
- ZEN_WARN("invalid derived data reference");
- }
- }
}
}
@@ -688,6 +675,25 @@ ProjectStore::Oplog::RegisterOplogEntry(CbObject Core, const OplogEntry& OpEntry
NiceTimeSpanMs(Timer.GetElapsedTimeMs()));
}
+ for (CbFieldView& Entry : Core["ddcreferences"sv])
+ {
+ CbObjectView RefObj = Entry.AsObjectView();
+ std::string_view Namespace = RefObj["namespace"sv].AsString(std::string_view("ue.ddc"));
+ std::string_view Bucket = RefObj["bucket"sv].AsString();
+ const IoHash Key = RefObj["key"sv].AsHash();
+ const Oid ValueId = RefObj["valueid"sv].AsObjectId();
+ const Oid ChunkId = RefObj["chunkid"sv].AsObjectId();
+
+ if (AddDerivedDataMapping(OplogLock, Namespace, Bucket, Key, ValueId, ChunkId))
+ {
+ ZEN_DEBUG("derived data {} -> '{}/{}/{}'", ChunkId, Namespace, Bucket, Key);
+ }
+ else
+ {
+ ZEN_WARN("invalid derived data reference");
+ }
+ }
+
for (CbFieldView& Entry : Core["meta"sv])
{
CbObjectView MetaObj = Entry.AsObjectView();