diff options
| author | Dan Engelbrecht <[email protected]> | 2023-09-15 07:36:58 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-15 13:36:58 +0200 |
| commit | 6163987f858597e92e68a61ed35be35bd4e7a552 (patch) | |
| tree | 94e78c3865f7f288df041636f9471b5a1511792b /src/zenserver/projectstore/projectstore.cpp | |
| parent | updated CHANGELOG.md release versions (diff) | |
| download | zen-6163987f858597e92e68a61ed35be35bd4e7a552.tar.xz zen-6163987f858597e92e68a61ed35be35bd4e7a552.zip | |
add more trace scopes (#362)
* more trace scopes
* Make sure ReplayLogEntries uses the correct size for oplog buffer
* changelog
Diffstat (limited to 'src/zenserver/projectstore/projectstore.cpp')
| -rw-r--r-- | src/zenserver/projectstore/projectstore.cpp | 69 |
1 files changed, 39 insertions, 30 deletions
diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp index 2fd6d492e..9be600e4e 100644 --- a/src/zenserver/projectstore/projectstore.cpp +++ b/src/zenserver/projectstore/projectstore.cpp @@ -267,6 +267,8 @@ struct ProjectStore::OplogStorage : public RefCounted void Open(bool IsCreate) { + ZEN_TRACE_CPU("Store::OplogStorage::Open"); + using namespace std::literals; ZEN_INFO("initializing oplog storage at '{}'", m_OplogStoragePath); @@ -288,7 +290,7 @@ struct ProjectStore::OplogStorage : public RefCounted void ReplayLog(std::function<void(CbObject, const OplogEntry&)>&& Handler) { - ZEN_TRACE_CPU("ProjectStore::OplogStorage::ReplayLog"); + ZEN_TRACE_CPU("Store::OplogStorage::ReplayLog"); // This could use memory mapping or do something clever but for now it just reads the file sequentially @@ -359,8 +361,7 @@ struct ProjectStore::OplogStorage : public RefCounted InvalidEntries++; continue; } - CbObject Op(SharedBuffer::MakeView(OpBuffer.Data(), LogEntry.OpCoreSize)); - Handler(Op, LogEntry); + Handler(CbObject(SharedBuffer::MakeView(OpBuffer.Data(), LogEntry.OpCoreSize)), LogEntry); } if (InvalidEntries) @@ -374,9 +375,9 @@ struct ProjectStore::OplogStorage : public RefCounted m_NextOpsOffset.load()); } - void ReplayLog(const std::span<OplogEntryAddress> Entries, std::function<void(CbObject)>&& Handler) + void ReplayLogEntries(const std::span<OplogEntryAddress> Entries, std::function<void(CbObject)>&& Handler) { - ZEN_TRACE_CPU("Store::OplogStorage::ReplayLog"); + ZEN_TRACE_CPU("Store::OplogStorage::ReplayLogEntries"); BasicFileBuffer OpBlobsBuffer(m_OpBlobs, 65536); IoBuffer OpBuffer(512); @@ -389,12 +390,14 @@ struct ProjectStore::OplogStorage : public RefCounted OpBuffer = IoBuffer(Entry.Size); } OpBlobsBuffer.Read((void*)OpBuffer.Data(), Entry.Size, OpFileOffset); - Handler(CbObject(SharedBuffer(OpBuffer))); + Handler(CbObject(SharedBuffer::MakeView(OpBuffer.Data(), Entry.Size))); } } CbObject GetOp(const OplogEntryAddress& Entry) { + ZEN_TRACE_CPU("Store::OplogStorage::GetOp"); + IoBuffer OpBuffer(Entry.Size); const uint64_t OpFileOffset = Entry.Offset * m_OpsAlign; @@ -405,7 +408,7 @@ struct ProjectStore::OplogStorage : public RefCounted OplogEntry AppendOp(SharedBuffer Buffer, uint32_t OpCoreHash, XXH3_128 KeyHash) { - ZEN_TRACE_CPU("ProjectStore::OplogStorage::AppendOp"); + ZEN_TRACE_CPU("Store::OplogStorage::AppendOp"); using namespace std::literals; @@ -498,7 +501,7 @@ ProjectStore::Oplog::ScrubStorage(ScrubContext& Ctx) const void ProjectStore::Oplog::GatherReferences(GcContext& GcCtx) { - ZEN_TRACE_CPU("ProjectStore::Oplog::GatherReferences"); + ZEN_TRACE_CPU("Store::Oplog::GatherReferences"); tsl::robin_set<IoHash> AttachmentHashes; IterateOplog([&](CbObject Op) { @@ -728,7 +731,7 @@ ProjectStore::Oplog::IterateOplog(std::function<void(CbObject)>&& Handler) return Lhs.Offset < Rhs.Offset; }); - m_Storage->ReplayLog(Entries, [&](CbObject Op) { Handler(Op); }); + m_Storage->ReplayLogEntries(Entries, [&](CbObject Op) { Handler(Op); }); } void @@ -773,7 +776,7 @@ ProjectStore::Oplog::IterateOplogWithKey(std::function<void(int, const Oid&, CbO } size_t EntryIndex = 0; - m_Storage->ReplayLog(SortedEntries, [&](CbObject Op) { + m_Storage->ReplayLogEntries(SortedEntries, [&](CbObject Op) { Handler(LSNs[EntryIndex], Keys[EntryIndex], Op); EntryIndex++; }); @@ -975,7 +978,7 @@ ProjectStore::Oplog::RegisterOplogEntry(RwLock::ExclusiveLockScope& OplogLock, const OplogEntryMapping& OpMapping, const OplogEntry& OpEntry) { - ZEN_TRACE_CPU("ProjectStore::Oplog::RegisterOplogEntry"); + ZEN_TRACE_CPU("Store::Oplog::RegisterOplogEntry"); // For now we're assuming the update is all in-memory so we can hold an exclusive lock without causing // too many problems. Longer term we'll probably want to ensure we can do concurrent updates however @@ -1007,7 +1010,7 @@ ProjectStore::Oplog::RegisterOplogEntry(RwLock::ExclusiveLockScope& OplogLock, uint32_t ProjectStore::Oplog::AppendNewOplogEntry(CbPackage OpPackage) { - ZEN_TRACE_CPU("ProjectStore::Oplog::AppendNewOplogEntry"); + ZEN_TRACE_CPU("Store::Oplog::AppendNewOplogEntry"); const CbObject& Core = OpPackage.GetObject(); const uint32_t EntryId = AppendNewOplogEntry(Core); @@ -1047,7 +1050,7 @@ ProjectStore::Oplog::AppendNewOplogEntry(CbPackage OpPackage) uint32_t ProjectStore::Oplog::AppendNewOplogEntry(CbObject Core) { - ZEN_TRACE_CPU("ProjectStore::Oplog::AppendNewOplogEntry"); + ZEN_TRACE_CPU("Store::Oplog::AppendNewOplogEntry"); using namespace std::literals; @@ -1108,7 +1111,7 @@ ProjectStore::Project::Exists(const std::filesystem::path& BasePath) void ProjectStore::Project::Read() { - ZEN_TRACE_CPU("ProjectStore::Project::Read"); + ZEN_TRACE_CPU("Store::Project::Read"); using namespace std::literals; @@ -1143,6 +1146,8 @@ ProjectStore::Project::Read() void ProjectStore::Project::Write() { + ZEN_TRACE_CPU("Store::Project::Write"); + using namespace std::literals; BinaryWriter Mem; @@ -1297,6 +1302,7 @@ ProjectStore::Project::NewOplog(std::string_view OplogId, const std::filesystem: ProjectStore::Oplog* ProjectStore::Project::OpenOplog(std::string_view OplogId) { + ZEN_TRACE_CPU("Store::OpenOplog"); { RwLock::SharedLockScope _(m_ProjectLock); @@ -1435,7 +1441,7 @@ ProjectStore::Project::ScrubStorage(ScrubContext& Ctx) void ProjectStore::Project::GatherReferences(GcContext& GcCtx) { - ZEN_TRACE_CPU("ProjectStore::Project::GatherReferences"); + ZEN_TRACE_CPU("Store::Project::GatherReferences"); Stopwatch Timer; const auto Guard = MakeGuard([&] { @@ -1673,7 +1679,7 @@ ProjectStore::ScrubStorage(ScrubContext& Ctx) void ProjectStore::GatherReferences(GcContext& GcCtx) { - ZEN_TRACE_CPU("ProjectStore::GatherReferences"); + ZEN_TRACE_CPU("Store::GatherReferences"); size_t ProjectCount = 0; size_t ExpiredProjectCount = 0; @@ -1713,7 +1719,7 @@ ProjectStore::GatherReferences(GcContext& GcCtx) void ProjectStore::CollectGarbage(GcContext& GcCtx) { - ZEN_TRACE_CPU("ProjectStore::CollectGarbage"); + ZEN_TRACE_CPU("Store::CollectGarbage"); size_t ProjectCount = 0; size_t ExpiredProjectCount = 0; @@ -1816,7 +1822,7 @@ ProjectStore::CollectGarbage(GcContext& GcCtx) GcStorageSize ProjectStore::StorageSize() const { - ZEN_TRACE_CPU("ProjectStore::StorageSize"); + ZEN_TRACE_CPU("Store::StorageSize"); using namespace std::literals; @@ -1849,7 +1855,7 @@ ProjectStore::StorageSize() const Ref<ProjectStore::Project> ProjectStore::OpenProject(std::string_view ProjectId) { - ZEN_TRACE_CPU("ProjectStore::OpenProject"); + ZEN_TRACE_CPU("Store::OpenProject"); { RwLock::SharedLockScope _(m_ProjectsLock); @@ -1898,7 +1904,7 @@ ProjectStore::NewProject(const std::filesystem::path& BasePath, std::string_view ProjectRootDir, std::string_view ProjectFilePath) { - ZEN_TRACE_CPU("ProjectStore::NewProject"); + ZEN_TRACE_CPU("Store::NewProject"); RwLock::ExclusiveLockScope _(m_ProjectsLock); @@ -1922,7 +1928,7 @@ ProjectStore::UpdateProject(std::string_view ProjectId, std::string_view ProjectRootDir, std::string_view ProjectFilePath) { - ZEN_TRACE_CPU("ProjectStore::UpdateProject"); + ZEN_TRACE_CPU("Store::UpdateProject"); ZEN_INFO("updating project {}", ProjectId); @@ -1948,7 +1954,7 @@ ProjectStore::UpdateProject(std::string_view ProjectId, bool ProjectStore::DeleteProject(std::string_view ProjectId) { - ZEN_TRACE_CPU("ProjectStore::DeleteProject"); + ZEN_TRACE_CPU("Store::DeleteProject"); ZEN_INFO("deleting project {}", ProjectId); @@ -1987,7 +1993,7 @@ ProjectStore::Exists(std::string_view ProjectId) CbArray ProjectStore::GetProjectsList() { - ZEN_TRACE_CPU("ProjectStore::GetProjectsList"); + ZEN_TRACE_CPU("Store::GetProjectsList"); using namespace std::literals; @@ -2012,7 +2018,7 @@ ProjectStore::GetProjectsList() std::pair<HttpResponseCode, std::string> ProjectStore::GetProjectFiles(const std::string_view ProjectId, const std::string_view OplogId, bool FilterClient, CbObject& OutPayload) { - ZEN_TRACE_CPU("ProjectStore::GetProjectFiles"); + ZEN_TRACE_CPU("Store::GetProjectFiles"); using namespace std::literals; @@ -2294,7 +2300,7 @@ ProjectStore::PutChunk(const std::string_view ProjectId, std::pair<HttpResponseCode, std::string> ProjectStore::WriteOplog(const std::string_view ProjectId, const std::string_view OplogId, IoBuffer&& Payload, CbObject& OutResponse) { - ZEN_TRACE_CPU("ProjectStore::WriteOplog"); + ZEN_TRACE_CPU("Store::WriteOplog"); Ref<ProjectStore::Project> Project = OpenProject(ProjectId); if (!Project) @@ -2366,7 +2372,7 @@ ProjectStore::ReadOplog(const std::string_view ProjectId, const HttpServerRequest::QueryParams& Params, CbObject& OutResponse) { - ZEN_TRACE_CPU("ProjectStore::ReadOplog"); + ZEN_TRACE_CPU("Store::ReadOplog"); Ref<ProjectStore::Project> Project = OpenProject(ProjectId); if (!Project) @@ -2420,7 +2426,7 @@ ProjectStore::ReadOplog(const std::string_view ProjectId, std::pair<HttpResponseCode, std::string> ProjectStore::WriteBlock(const std::string_view ProjectId, const std::string_view OplogId, IoBuffer&& Payload) { - ZEN_TRACE_CPU("ProjectStore::WriteBlock"); + ZEN_TRACE_CPU("Store::WriteBlock"); Ref<ProjectStore::Project> Project = OpenProject(ProjectId); if (!Project) @@ -2455,7 +2461,7 @@ ProjectStore::Rpc(HttpServerRequest& HttpReq, IoBuffer&& Payload, AuthMgr& AuthManager) { - ZEN_TRACE_CPU("ProjectStore::Rpc"); + ZEN_TRACE_CPU("Store::Rpc"); using namespace std::literals; HttpContentType PayloadContentType = HttpReq.RequestContentType(); @@ -2550,6 +2556,7 @@ ProjectStore::Rpc(HttpServerRequest& HttpReq, } else if (Method == "getchunks"sv) { + ZEN_TRACE_CPU("Store::Rpc::getchunks"); CbPackage ResponsePackage; { CbArrayView ChunksArray = Cb["chunks"sv].AsArrayView(); @@ -2575,6 +2582,7 @@ ProjectStore::Rpc(HttpServerRequest& HttpReq, } else if (Method == "putchunks"sv) { + ZEN_TRACE_CPU("Store::Rpc::putchunks"); if (!AreDiskWritesAllowed()) { HttpReq.WriteResponse(HttpResponseCode::InsufficientStorage); @@ -2592,6 +2600,7 @@ ProjectStore::Rpc(HttpServerRequest& HttpReq, } else if (Method == "snapshot"sv) { + ZEN_TRACE_CPU("Store::Rpc::snapshot"); if (!AreDiskWritesAllowed()) { HttpReq.WriteResponse(HttpResponseCode::InsufficientStorage); @@ -2753,7 +2762,7 @@ ProjectStore::Rpc(HttpServerRequest& HttpReq, std::pair<HttpResponseCode, std::string> ProjectStore::Export(Ref<ProjectStore::Project> Project, ProjectStore::Oplog& Oplog, CbObjectView&& Params, AuthMgr& AuthManager) { - ZEN_TRACE_CPU("ProjectStore::Export"); + ZEN_TRACE_CPU("Store::Export"); using namespace std::literals; @@ -2813,7 +2822,7 @@ ProjectStore::Export(Ref<ProjectStore::Project> Project, ProjectStore::Oplog& Op std::pair<HttpResponseCode, std::string> ProjectStore::Import(ProjectStore::Project& Project, ProjectStore::Oplog& Oplog, CbObjectView&& Params, AuthMgr& AuthManager) { - ZEN_TRACE_CPU("ProjectStore::Import"); + ZEN_TRACE_CPU("Store::Import"); using namespace std::literals; |