aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/projectstore/projectstore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-09-15 07:36:58 -0400
committerGitHub <[email protected]>2023-09-15 13:36:58 +0200
commit6163987f858597e92e68a61ed35be35bd4e7a552 (patch)
tree94e78c3865f7f288df041636f9471b5a1511792b /src/zenserver/projectstore/projectstore.cpp
parentupdated CHANGELOG.md release versions (diff)
downloadzen-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.cpp69
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;