diff options
| author | Dan Engelbrecht <[email protected]> | 2022-09-30 15:13:45 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-09-30 06:13:45 -0700 |
| commit | bcc85c7e5cbcf0737f5180e3d601e63b480e8949 (patch) | |
| tree | 134d702e98ec63ff06e6d08345a4d021812d33b3 /zenserver/projectstore.cpp | |
| parent | Use bucket/key to get inline value in upstream for chunks without a chunkid (... (diff) | |
| download | zen-bcc85c7e5cbcf0737f5180e3d601e63b480e8949.tar.xz zen-bcc85c7e5cbcf0737f5180e3d601e63b480e8949.zip | |
De/reduce buffer creation in parsepackedmessage (#175)
* Don't create call CreateBuffer for attachement data that we only read and not keep
* changelog
* don't read oplog attachments into memory just to do a redundant store of them
Diffstat (limited to 'zenserver/projectstore.cpp')
| -rw-r--r-- | zenserver/projectstore.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp index 93276f029..19978c3e9 100644 --- a/zenserver/projectstore.cpp +++ b/zenserver/projectstore.cpp @@ -1544,8 +1544,13 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects) std::vector<IoHash> MissingChunks; CbPackage::AttachmentResolver Resolver = [&](const IoHash& Hash) -> SharedBuffer { - IoHash AttachmentId; + if (m_CidStore.ContainsChunk(Hash)) + { + // Return null attachment as we already have it, no point in reading it and storing it again + return {}; + } + IoHash AttachmentId; if (IsUsingSalt) { IoHash AttachmentSpec[]{SaltHash, Hash}; @@ -1557,12 +1562,7 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects) } std::filesystem::path AttachmentPath = Oplog.TempPath() / AttachmentId.ToHexString(); - - if (IoBuffer CompressedData = m_CidStore.FindChunkByCid(Hash)) - { - return SharedBuffer(std::move(CompressedData)); - } - else if (IoBuffer Data = IoBufferBuilder::MakeFromTemporaryFile(AttachmentPath)) + if (IoBuffer Data = IoBufferBuilder::MakeFromTemporaryFile(AttachmentPath)) { return SharedBuffer(std::move(Data)); } |